就像下面鏈接中顯示的圖片一樣。我想用白色給我的機器人手上色(RGB:0.9 0.9 0.9)。當我使用glColor3f時,白色顯示正確。但是當我將RGB數據存儲在GLfloat數組中並調用glColorPointer時,顏色變得很奇怪。OpenGL:使用glColorPointer讓顏色變得不可思議
這裏是右臂
static const GLfloat playerBodyColor[] = {0.9, 0.9, 0.9};
glEnableClientState(GL_COLOR_ARRAY);
//glColor3f(0.9, 0.9, 0.9);
glColorPointer(3, GL_FLOAT, 0, playerBodyColor);
glTranslatef(0.0, player_body_height/6, player_body_width/2+LENGTH_UNIT/2);
glRotatef(340.0, 0.0, 0.0, 1.0);
glPushMatrix();
glTranslatef(2*LENGTH_UNIT, 0.0, 0.0);
glScalef (4.0, 1.0, 1.0);
copyCodeSolidCube (LENGTH_UNIT);
glDisableClientState(GL_COLOR_ARRAY);
glPopMatrix();
的代碼,如果我改變這樣的代碼:
static const GLfloat playerBodyColor[] = {0.9, 0.9, 0.9};
//glEnableClientState(GL_COLOR_ARRAY);
glColor3f(0.9, 0.9, 0.9);
//glColorPointer(3, GL_FLOAT, 0, playerBodyColor);
glTranslatef(0.0, player_body_height/6, player_body_width/2+LENGTH_UNIT/2);
glRotatef(340.0, 0.0, 0.0, 1.0);
glPushMatrix();
glTranslatef(2*LENGTH_UNIT, 0.0, 0.0);
glScalef (4.0, 1.0, 1.0);
copyCodeSolidCube (LENGTH_UNIT);
//glDisableClientState(GL_COLOR_ARRAY);
glPopMatrix();
顏色顯示正確。
的正確的色碼圖片: http://imgur.com/S6zt5wf
的錯色碼圖片: http://imgur.com/8m5Ag1O
在代碼中,我也稱爲功能copyCodeSolidCube。 這裏是copyCodeSolidCube部分代碼:
glEnableClientState (GL_VERTEX_ARRAY);
glEnableClientState (GL_NORMAL_ARRAY);
glVertexPointer (3, GL_FLOAT, 0, vert);
glNormalPointer (GL_FLOAT, 0, norm);
glDrawElements(GL_TRIANGLE_FAN, 4, GL_UNSIGNED_BYTE, one);
glDrawElements(GL_TRIANGLE_FAN, 4, GL_UNSIGNED_BYTE, two);
glDrawElements(GL_TRIANGLE_FAN, 4, GL_UNSIGNED_BYTE, three);
glDrawElements(GL_TRIANGLE_FAN, 4, GL_UNSIGNED_BYTE, four);
glDrawElements(GL_TRIANGLE_FAN, 4, GL_UNSIGNED_BYTE, five);
glDrawElements(GL_TRIANGLE_FAN, 4, GL_UNSIGNED_BYTE, six);
glDisableClientState (GL_VERTEX_ARRAY);
glDisableClientState (GL_NORMAL_ARRAY);
問題出在哪裏?
請告訴我們代碼 –
等一下。讓我粘貼我的代碼。 thx –