<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Bunte Quads]]></title><description><![CDATA[<p>Abend,</p>
<p>ich moechte in OpenGL 10 Quads in einer bestimmten Farbe zeichnen. Das Problem ist nur, dass meine Farbe einfach ignoriert wird. Die Quads sind immer weiss.</p>
<p>Hier auszugsweise der relevante Code (hab ihn etwas vereinfacht):</p>
<pre><code class="language-cpp">m_posData  = new Vec3[10*4]; // Jedes Quad hat 4 Vertices
m_diffData = new Vec4[10*4];
Vec4 color = Vec4(0.1f, 0.9f, 0.7f, 0.8f);
for(int i = 0; i &lt; 10; i++) {	
   int startIndex = i*4;
   m_diffData[startIndex]   = color ;
   m_diffData[startIndex+1] = color ;
   m_diffData[startIndex+2] = color ;
   m_diffData[startIndex+3] = color ;
}

// VBOs erzeugen
glGenBuffers(1, &amp;vboPos);
glBindBuffer(GL_ARRAY_BUFFER, vboPos);
glBufferData(GL_ARRAY_BUFFER, 4 * 10 * 3 * sizeof(float), NULL, GL_STREAM_DRAW);

glGenBuffers(1, &amp;vboDiff);
glBindBuffer(GL_ARRAY_BUFFER, vboDiff);
glBufferData(GL_ARRAY_BUFFER, 4 * 10 * 4 * sizeof(float), NULL, GL_STREAM_DRAW);

// ... in jedem Frame werden die Positionen und Farben veraendert

Rendern:
glEnableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, vboPos);
glBufferData(GL_ARRAY_BUFFER, 4 * 10 * 3 * sizeof(float), m_posData, GL_STREAM_DRAW);

glEnableClientState(GL_COLOR_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, vboDiff);
glBufferData(GL_ARRAY_BUFFER, 4 * 10 * 4 * sizeof(float), m_diffData, GL_STREAM_DRAW);

glBindBuffer(GL_ARRAY_BUFFER, vboPos);
glVertexPointer(3, GL_FLOAT, 0, (const GLvoid*)0);

glBindBuffer(GL_ARRAY_BUFFER, vboDiff);
glColorPointer(4, GL_FLOAT, 0, (const GLvoid*)0);
glDrawArrays(GL_QUADS, 0, 10 * 4);
</code></pre>
<p>In jedem Frame editiere ich die Positionen (Arraz m_posData) und die Farben (m_diffData). Vorm rendern kopiere ich die Daten dann in die VBOs und render sie. Die Farben sind 4 floats.<br />
In diesem Beispiel will ich z.B. gruene Quads rendern, aber alle Quads sind immer weiss. Lighting ist uebrigens OFF.<br />
Wieso sind alle meine Quads weiss? Muss ich noch was machen um floats als Farbe verwenden zu koennen?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/278983/bunte-quads</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 00:16:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/278983.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Dec 2010 17:07:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bunte Quads on Thu, 16 Dec 2010 17:07:04 GMT]]></title><description><![CDATA[<p>Abend,</p>
<p>ich moechte in OpenGL 10 Quads in einer bestimmten Farbe zeichnen. Das Problem ist nur, dass meine Farbe einfach ignoriert wird. Die Quads sind immer weiss.</p>
<p>Hier auszugsweise der relevante Code (hab ihn etwas vereinfacht):</p>
<pre><code class="language-cpp">m_posData  = new Vec3[10*4]; // Jedes Quad hat 4 Vertices
m_diffData = new Vec4[10*4];
Vec4 color = Vec4(0.1f, 0.9f, 0.7f, 0.8f);
for(int i = 0; i &lt; 10; i++) {	
   int startIndex = i*4;
   m_diffData[startIndex]   = color ;
   m_diffData[startIndex+1] = color ;
   m_diffData[startIndex+2] = color ;
   m_diffData[startIndex+3] = color ;
}

// VBOs erzeugen
glGenBuffers(1, &amp;vboPos);
glBindBuffer(GL_ARRAY_BUFFER, vboPos);
glBufferData(GL_ARRAY_BUFFER, 4 * 10 * 3 * sizeof(float), NULL, GL_STREAM_DRAW);

glGenBuffers(1, &amp;vboDiff);
glBindBuffer(GL_ARRAY_BUFFER, vboDiff);
glBufferData(GL_ARRAY_BUFFER, 4 * 10 * 4 * sizeof(float), NULL, GL_STREAM_DRAW);

// ... in jedem Frame werden die Positionen und Farben veraendert

Rendern:
glEnableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, vboPos);
glBufferData(GL_ARRAY_BUFFER, 4 * 10 * 3 * sizeof(float), m_posData, GL_STREAM_DRAW);

glEnableClientState(GL_COLOR_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, vboDiff);
glBufferData(GL_ARRAY_BUFFER, 4 * 10 * 4 * sizeof(float), m_diffData, GL_STREAM_DRAW);

glBindBuffer(GL_ARRAY_BUFFER, vboPos);
glVertexPointer(3, GL_FLOAT, 0, (const GLvoid*)0);

glBindBuffer(GL_ARRAY_BUFFER, vboDiff);
glColorPointer(4, GL_FLOAT, 0, (const GLvoid*)0);
glDrawArrays(GL_QUADS, 0, 10 * 4);
</code></pre>
<p>In jedem Frame editiere ich die Positionen (Arraz m_posData) und die Farben (m_diffData). Vorm rendern kopiere ich die Daten dann in die VBOs und render sie. Die Farben sind 4 floats.<br />
In diesem Beispiel will ich z.B. gruene Quads rendern, aber alle Quads sind immer weiss. Lighting ist uebrigens OFF.<br />
Wieso sind alle meine Quads weiss? Muss ich noch was machen um floats als Farbe verwenden zu koennen?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1995469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1995469</guid><dc:creator><![CDATA[Farbsucher]]></dc:creator><pubDate>Thu, 16 Dec 2010 17:07:04 GMT</pubDate></item><item><title><![CDATA[Reply to Bunte Quads on Fri, 17 Dec 2010 16:49:31 GMT]]></title><description><![CDATA[<p>Renderst du mit oder ohne Shader?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1995954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1995954</guid><dc:creator><![CDATA[Vertexwahn]]></dc:creator><pubDate>Fri, 17 Dec 2010 16:49:31 GMT</pubDate></item></channel></rss>