<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Setting a glsl shader attribute</title>
		<link>http://www.allegro.cc/forums/view/606878</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 01 Apr 2011 04:10:15 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m working on a opengl graphics project using allegro 5 for school.  I&#39;ve been using the OpenGL superbible 5th ed as a guide, however I&#39;ve run across a problem.  The book uses GLTools to work with shaders for the majority of the book, but in chapter 12 it tries to explain how to load your own attributes without using GLTools.  My issue is the examples are rather short and the book jumps to more advanced topics very quickly.  I&#39;ve copied/written code that should work, but I have no idea what my next step should be.  Could someone look at my code below and point me in the right direction?</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>
<span class="number">  2</span>  <span class="k1">char</span> <span class="k3">*</span>arg<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="s">"vVertex"</span>, <span class="s">"vColor"</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  3</span>  myShader <span class="k3">=</span> loadShaders<span class="k2">(</span><span class="s">"test_vertex.vp.txt"</span>, <span class="s">"test_vertex.fp.txt"</span>, arg, <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>  glUseProgram<span class="k2">(</span>myShader<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>  glGenVertexArrays<span class="k2">(</span><span class="n">1</span>, <span class="k3">&amp;</span>vao<span class="k2">)</span><span class="k2">;</span><span class="c">//generate the VAO!!!</span>
<span class="number">  6</span>  glBindVertexArray<span class="k2">(</span>vao<span class="k2">)</span><span class="k2">;</span> <span class="c">//in the darkness BIND IT!!</span>
<span class="number">  7</span>
<span class="number">  8</span>  glGenBuffers<span class="k2">(</span><span class="n">1</span>, <span class="k3">&amp;</span>vbo<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>  glBindBuffer<span class="k2">(</span>GL_ARRAY_BUFFER, vbo<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</span> <span class="k1">static</span> <span class="k1">const</span> GLfloat positions<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="n">300</span>, <span class="n">200</span>, <span class="k3">-</span><span class="n">740</span>, <span class="n">1</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 12</span> <span class="k1">static</span> <span class="k1">const</span> GLfloat colors<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="n">1</span>, <span class="n">1</span>, <span class="n">1</span>,<span class="n">1</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 13</span> glBufferData<span class="k2">(</span>GL_ARRAY_BUFFER, <span class="k1">sizeof</span><span class="k2">(</span>positions<span class="k2">)</span> <span class="k3">+</span> <span class="k1">sizeof</span><span class="k2">(</span>colors<span class="k2">)</span>, NULL, GL_STATIC_DRAW<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span> glBufferSubData<span class="k2">(</span>GL_ARRAY_BUFFER, <span class="n">0</span>,<span class="k1">sizeof</span><span class="k2">(</span>positions<span class="k2">)</span>, positions<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span> glBufferSubData<span class="k2">(</span>GL_ARRAY_BUFFER, <span class="k1">sizeof</span><span class="k2">(</span>positions<span class="k2">)</span>, <span class="k1">sizeof</span><span class="k2">(</span>colors<span class="k2">)</span>, colors<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span> glVertexAttribPointer<span class="k2">(</span><span class="n">0</span>, <span class="n">4</span>, GL_FLOAT, GL_FALSE, <span class="n">0</span>,<span class="k2">(</span><span class="k1">const</span> GLvoid <span class="k3">*</span><span class="k2">)</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span> glVertexAttribPointer<span class="k2">(</span><span class="n">1</span>, <span class="n">4</span>, GL_FLOAT, GL_FALSE, <span class="n">0</span>,<span class="k2">(</span><span class="k1">const</span> GLvoid <span class="k3">*</span><span class="k2">)</span><span class="k1">sizeof</span><span class="k2">(</span>positions<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span>   glEnableVertexAttribArray<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>   glEnableVertexAttribArray<span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>
<span class="number"> 22</span> m_locMVP <span class="k3">=</span> glGetUniformLocation<span class="k2">(</span>starFieldShader, <span class="s">"mvpMatrix"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span> m_locTexture <span class="k3">=</span> glGetUniformLocation<span class="k2">(</span>starFieldShader, <span class="s">"starImage"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span> m_locTimeStamp <span class="k3">=</span> glGetUniformLocation<span class="k2">(</span>starFieldShader, <span class="s">"timeStamp"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>    
<span class="number"> 26</span>  glGenTextures<span class="k2">(</span><span class="n">1</span>, <span class="k3">&amp;</span>m_starTexture<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>  m_star <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"star.tga"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>  <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>m_star<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>  starTexture <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_opengl_texture"><span class="a">al_get_opengl_texture</span></a><span class="k2">(</span>m_star<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>  <span class="k1">if</span> <span class="k2">(</span>m_starTexture <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 31</span>    glBindTexture<span class="k2">(</span>GL_TEXTURE_2D, m_starTexture<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span>  <span class="k1">else</span>
<span class="number"> 33</span>    cout<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"get opengl texture FAIL"</span><span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vishiano)</author>
		<pubDate>Wed, 30 Mar 2011 08:20:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Google and OpenGL reference is your friend.</p><p>What you want is something like (this would be for the texture):</p><div class="source-code snippet"><div class="inner"><pre>   glActiveTexture<span class="k2">(</span>GL_TEXTURE0<span class="k2">)</span><span class="k2">;</span>
   glBindTexture<span class="k2">(</span>GL_TEXTURE_2D, starTexture<span class="k2">)</span><span class="k2">;</span>
   glUniform1i<span class="k2">(</span>m_locTexture, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

This is taken from the allegro_shader addon which is in the 5.1 branch of Allegro. You might want to have a look at it. Setting matrices and other uniforms is pretty easy too.</p><p>[edit]</p><p>Oops, I forgot to explain it. When you have a sampler2D in a shader it&#39;s not actually a texture number but a texture <i>unit</i> that it references. In the above code, you set the active texture unit to 0 (you can use more texture units for multitexturing if you want), bind the texture, then the glUniform call tells the shader that that sampler is using texture unit 0.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Wed, 30 Mar 2011 09:42:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Didn&#39;t I already bind the texture and set its location?  I&#39;m aware that allegro 5.1 will add in shader support, and thats great, but I&#39;m already pushing my professor&#39;s limits using Allegro for display/keyboard input.  </p><p>Maybe I&#39;m not explaining my confusion well enough.  I&#39;m pretty sure I&#39;ve compiled and linked my shader code correctly.  I&#39;m also fairly certain I&#39;ve set my uniforms correctly.  I&#39;m not certain I&#39;ve set my attributes correctly, or how to draw using the shader(GlBegin??).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vishiano)</author>
		<pubDate>Wed, 30 Mar 2011 21:45:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The shader addon isn&#39;t going to add any overhead.. but anyway, here&#39;s some code from it that sets an attribute:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span>
<span class="number">  2</span><span class="k1">bool</span> _al_set_shader_texcoord_array_glsl<span class="k2">(</span>ALLEGRO_SHADER <span class="k3">*</span>shader, <span class="k1">float</span> <span class="k3">*</span>u, <span class="k1">int</span> stride<span class="k2">)</span>
<span class="number">  3</span><span class="k2">{</span>
<span class="number">  4</span>   ALLEGRO_SHADER_GLSL_S <span class="k3">*</span>gl_shader <span class="k3">=</span> <span class="k2">(</span>ALLEGRO_SHADER_GLSL_S <span class="k3">*</span><span class="k2">)</span>shader<span class="k2">;</span>
<span class="number">  5</span>
<span class="number">  6</span>   GLint loc <span class="k3">=</span> glGetAttribLocation<span class="k2">(</span>gl_shader-&gt;program_object, <span class="s">"texcoord"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>   <span class="k1">if</span> <span class="k2">(</span>loc <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  8</span>      <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>   <span class="k1">if</span> <span class="k2">(</span>u <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 11</span>      glDisableVertexAttribArray<span class="k2">(</span>loc<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>      <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 13</span>   <span class="k2">}</span>
<span class="number"> 14</span>
<span class="number"> 15</span>   glVertexAttribPointer<span class="k2">(</span>loc, <span class="n">2</span>, GL_FLOAT, <span class="k1">false</span>, stride, u<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>   glEnableVertexAttribArray<span class="k2">(</span>loc<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>
<span class="number"> 18</span>   <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 19</span><span class="k2">}</span>
</div></div><p>

&quot;u&quot; is a pointer to the first floating point texture coordinate and stride is the number of bytes between &quot;u&quot;s.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Wed, 30 Mar 2011 22:36:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thats a little helpful, I really cant use allegro shaders, but it does help a little.  How would you draw that shader?  Would something like this work?</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number"> 1</span> glUseProgram<span class="k2">(</span>myShader<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 2</span>    glBegin<span class="k2">(</span>GL_POINTS<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 3</span>    <span class="k2">{</span>
<span class="number"> 4</span>    glVertexAttrib4f<span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">300</span>, <span class="k3">-</span><span class="n">740</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 5</span>    <span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vishiano)</author>
		<pubDate>Thu, 31 Mar 2011 03:58:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>No. You set up color and vertex position arrays just like the texture arrays in the sample above, then you call glDrawArrays.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Thu, 31 Mar 2011 06:57:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Mmmm, still having some trouble.  Could you let me know which lines I should change or delete or are just useless?</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span> <span class="k1">char</span> <span class="k3">*</span>arg<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="s">"vVertex"</span>, <span class="s">"vColor"</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  2</span>  myShader <span class="k3">=</span> loadShaders<span class="k2">(</span><span class="s">"test_vertex.vp.txt"</span>, <span class="s">"SpaceFlight.fp"</span>, arg, <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  3</span>  glUseProgram<span class="k2">(</span>myShader<span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>  glGenVertexArrays<span class="k2">(</span><span class="n">1</span>, <span class="k3">&amp;</span>vao<span class="k2">)</span><span class="k2">;</span><span class="c">//generate the VAO!!!</span>
<span class="number">  5</span>  glBindVertexArray<span class="k2">(</span>vao<span class="k2">)</span><span class="k2">;</span> <span class="c">//in the darkness BIND IT!!</span>
<span class="number">  6</span>
<span class="number">  7</span>  glGenBuffers<span class="k2">(</span><span class="n">1</span>, <span class="k3">&amp;</span>vbo<span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>  glBindBuffer<span class="k2">(</span>GL_ARRAY_BUFFER, vbo<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span> <span class="k1">static</span> <span class="k1">const</span> GLfloat positions<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="n">300</span>, <span class="n">200</span>, <span class="k3">-</span><span class="n">740</span>, <span class="n">1</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 11</span> <span class="k1">static</span> <span class="k1">const</span> GLfloat colors<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="n">1</span>, <span class="n">1</span>, <span class="n">1</span>,<span class="n">1</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 12</span> <span class="k1">const</span> <span class="k1">float</span> <span class="k3">*</span>u <span class="k3">=</span> <span class="k3">&amp;</span>positions<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 13</span> <span class="k1">const</span> <span class="k1">float</span> <span class="k3">*</span>p <span class="k3">=</span> <span class="k3">&amp;</span>colors<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 14</span> 
<span class="number"> 15</span> glBufferData<span class="k2">(</span>GL_ARRAY_BUFFER, <span class="k1">sizeof</span><span class="k2">(</span>positions<span class="k2">)</span> <span class="k3">+</span> <span class="k1">sizeof</span><span class="k2">(</span>colors<span class="k2">)</span>, NULL, GL_STATIC_DRAW<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span> glBufferSubData<span class="k2">(</span>GL_ARRAY_BUFFER, <span class="n">0</span>,<span class="k1">sizeof</span><span class="k2">(</span>positions<span class="k2">)</span>, positions<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span> glBufferSubData<span class="k2">(</span>GL_ARRAY_BUFFER, <span class="k1">sizeof</span><span class="k2">(</span>positions<span class="k2">)</span>, <span class="k1">sizeof</span><span class="k2">(</span>colors<span class="k2">)</span>, colors<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span> 
<span class="number"> 19</span> glVertexAttribPointer<span class="k2">(</span><span class="n">0</span>, <span class="n">4</span>, GL_FLOAT, GL_FALSE, <span class="n">0</span>, u<span class="k2">)</span><span class="k2">;</span><span class="c">//0  stride cuz its only one point?</span>
<span class="number"> 20</span> glVertexAttribPointer<span class="k2">(</span><span class="n">1</span>, <span class="n">4</span>, GL_FLOAT, GL_FALSE, <span class="n">0</span>, p<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span> glEnableVertexAttribArray<span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span> glEnableVertexAttribArray<span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>
<span class="number"> 24</span> m_locMVP <span class="k3">=</span> glGetUniformLocation<span class="k2">(</span>myShader, <span class="s">"mvpMatrix"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span> m_locTexture <span class="k3">=</span> glGetUniformLocation<span class="k2">(</span>myShader, <span class="s">"starImage"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span> m_locTimeStamp <span class="k3">=</span> glGetUniformLocation<span class="k2">(</span>myShader, <span class="s">"timeStamp"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>    
<span class="number"> 28</span>  glGenTextures<span class="k2">(</span><span class="n">1</span>, <span class="k3">&amp;</span>m_starTexture<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>  m_star <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"star.tga"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>  <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>m_star<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>  starTexture <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_opengl_texture"><span class="a">al_get_opengl_texture</span></a><span class="k2">(</span>m_star<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span>  <span class="k1">if</span> <span class="k2">(</span>m_starTexture <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number"> 33</span>    glBindTexture<span class="k2">(</span>GL_TEXTURE_2D, m_starTexture<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span>  <span class="k1">else</span>
<span class="number"> 35</span>    cout<span class="k3">&lt;</span><span class="k3">&lt;</span><span class="s">"get opengl texture FAIL"</span><span class="k2">;</span>
<span class="number"> 36</span>
<span class="number"> 37</span><span class="c">//then my render function looks like this</span>
<span class="number"> 38</span><span class="k1">void</span> render_my_shader<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 39</span><span class="k2">{</span>
<span class="number"> 40</span>   glEnable<span class="k2">(</span>GL_BLEND<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>  glBlendFunc<span class="k2">(</span>GL_ONE, GL_ONE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span>
<span class="number"> 43</span>    <span class="c">// Let the vertex program determine the point size</span>
<span class="number"> 44</span>  glEnable<span class="k2">(</span>GL_PROGRAM_POINT_SIZE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span>  <span class="c">//glEnable(TEXTURE_2D);</span>
<span class="number"> 46</span>
<span class="number"> 47</span>    <span class="c">// Bind to our shader, set uniforms</span>
<span class="number"> 48</span>    glUseProgram<span class="k2">(</span>myShader<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 49</span>    glUniformMatrix4fv<span class="k2">(</span>m_locMVP, <span class="n">1</span>, GL_FALSE, viewFrustum.GetProjectionMatrix<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span>    glUniform1i<span class="k2">(</span>m_locTexture, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 51</span><span class="c">//  glEnableVertexAttribArray(0);//when these are uncommented I get an exception</span>
<span class="number"> 52</span><span class="c">// glEnableVertexAttribArray(1);</span>
<span class="number"> 53</span>
<span class="number"> 54</span>  <span class="k1">float</span> fTime <span class="k3">=</span> moveZ<span class="k2">;</span>
<span class="number"> 55</span>    glUniform1f<span class="k2">(</span>m_locTimeStamp, fTime<span class="k3">*</span><span class="n">5</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 56</span>  glBindTexture<span class="k2">(</span>GL_TEXTURE_2D, m_starTexture<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 57</span>
<span class="number"> 58</span>glDrawArrays<span class="k2">(</span>GL_POINTS, <span class="n">0</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 59</span>
<span class="number"> 60</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vishiano)</author>
		<pubDate>Thu, 31 Mar 2011 23:17:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Didn&#39;t look at it all but stride should not be zero it should be sizeof(type)*num_components if they&#39;re tightly packed. Also passing 0 and 1 to glVertexAttribPointer is wrong, you are supposed to pass the value retrieved from getGetVertexAttribPointer (IIRC that&#39;s the name of the function but it might be something else).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Fri, 01 Apr 2011 01:23:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Fixed the stride, but for glVertexAttrib pointer I binded 0 and 1 like so...</p><p>glBindAttribLocation(myShader, 0, &quot;vVertex&quot;);<br />glBindAttribLocation(myShader, 1, &quot;vColor&quot;);</p><p>so shouldn&#39;t 0 and 1 work for glVertexAttribPointer?  Either way, still not getting my shader to appear.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vishiano)</author>
		<pubDate>Fri, 01 Apr 2011 03:38:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I don&#39;t know about that function. I also haven&#39;t used VBOs so I can&#39;t tell if that code is right. Are you sure you want to draw just 1 pixel?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Fri, 01 Apr 2011 04:03:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Just trying to get the hang of setting up shaders, how many points I draw is arbitrary.  If you know an easier way to do it I&#39;m certainly open to that.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Vishiano)</author>
		<pubDate>Fri, 01 Apr 2011 04:10:15 +0000</pubDate>
	</item>
</rss>
