2
我渲染這樣一個對象:開放GLES 1.1 - GLColorPointer創建彩虹的顏色時,我只是想紅
for (int i = 0; i < COLOR_ARRAY_SIZE; i += 4) {
colors[i] = 1.0f;
colors[i + 1] = 0.0f;
colors[i + 2] = 0.0f;
colors[i + 3] = 1.0f;
}
// Clear color and depth buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Set GL11 flags:
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnable(GL_DEPTH_TEST);
// make sure nothing messes with the colour
glDisable(GL_BLEND);
glDisable(GL_DITHER);
glDisable(GL_FOG);
glDisable(GL_LIGHTING);
glDisable(GL_TEXTURE_2D);
glShadeModel(GL_FLAT);
// Load projection matrix:
glMatrixMode(GL_PROJECTION);
glLoadMatrixf(projectionMatrix);
// Load model view matrix and scale appropriately
int kObjectScale = 300f;
glMatrixMode(GL_MODELVIEW);
glLoadMatrixf(modelViewMatrix);
glTranslatef(0.5f, 0.5f, 0.5f);
glScalef(kObjectScale, kObjectScale, kObjectScale);
// Draw object
glVertexPointer(3, GL_FLOAT, 0, (const GLvoid*) &vertexPositions[0]);
glNormalPointer(GL_FLOAT, 0, (const GLvoid*) &vertexNormals[0]);
glColorPointer(4, GL_FLOAT, 0, (const GLvoid*) &colors[0]);
glDrawElements(GL_TRIANGLES, 11733, GL_UNSIGNED_SHORT,
(const GLvoid*) &indices[0]);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
我希望這會使我的對象全部爲紅色,而是它的不同顏色的彩虹。有誰知道爲什麼?我會假設我的「顏色」數組緩衝區有問題,但我不能在我的生活中看到它是什麼。實際的頂點看起來很好。
我意外地將步幅設置爲1,同時嘗試並在發帖前忘記更改它,對不起 - 我會改變這一點。我以這種方式填充顏色數組,以便得到表示每個頂點的紅色的R,G,B,A值的緩衝區。我這樣做,以便我可以調試爲什麼我的顏色是一團糟。最終,我想換掉這個「紅色」緩衝區,用於我的真實顏色陣列。 COLOR_ARRAY_SIZE == 15644. –
真棒 - 很高興提供幫助。 :) –
應該這樣工作嗎?我將步幅改回到0,並且仍然獲得了多色效果。當然,用1.0,0.0,0.0,1.0填充我的數組會讓每個頂點都變成紅色? –