2010-10-24 3 views
5

왜 검은 색으로 만 그려지나요?glColor3i 만 검정색입니다.

glPushMatrix(); 
// Check the current color 
glColor3i(255, 0, 255); 
GLint currentColor[4]; 
glGetIntegerv(GL_CURRENT_COLOR, currentColor); 
//currentColor[0] = 254, 1 = 0, 2 = 254, 3 = doesn't matter 

glBegin(GL_QUADS); 
glLineWidth(1); 
    glVertex2f(0, 0); 
    glVertex2f(WINDOW_WIDTH * .1, 0); 
    glVertex2f(WINDOW_WIDTH * .1, WINDOW_HEIGHT); 
    glVertex2f(0, WINDOW_HEIGHT); 
glEnd(); 
glPopMatrix(); 
+0

또한 다음을 시도해 보았습니다. \t glDisable (GL_BLEND); glDisable (GL_DITHER); \t glDisable (GL_FOG); glDisable (GL_LIGHTING); \t glDisable (GL_TEXTURE_1D); glDisable (GL_TEXTURE_2D); \t glDisable (GL_TEXTURE_3D); glShadeModel (GL_FLAT); –

답변

12

메모리에서 glColor3i는 전체 정수 범위를 포함하도록 크기가 조정 된 색상 값을 사용한다고 생각합니다. 따라서 255 값은 대략 0과 같습니다 .....

대신 2147483647을 시도하십시오.

+0

맞아, 내 OpenGL 책이 틀리다 –

+9

그래, 0-255 범위를 사용하려면 glColor3ub (255, 0, 255); –

3

모든 유형화 된 정수 gl 엔트리 포인트는이 범위 동작을 갖습니다. 부동 소수점 변형은 정규화 된 값인 0.0 - 1.0을 사용합니다. glColorPointer가 활성화되어 있지 않은 경우 (실제로 GL 버전에서 명명 된 정점 속성을 사용하고 OpenGLES 2.x 이상에서는 일반이 아닌 경우) 꼭지점 배열 처리 중에 출력에 영향을주는 현재 정점 색상을 설정합니다.

glColor의 일반적인 변형은 glColor {3,4} {u, b} 및 glColor {3,4} f입니다.

당신의 경우에는 0xFF 값을 고집하고 glColor3ub (255, 0, 255) 또는 더 쉽게 glColor3f (1.0f, 0.0f, 1.0f)를 사용해야합니다.

glColor3i()와 함께 INT_MAX의 정수 값 또는 약 20 억을 사용하면 잘 읽지 않습니다.

+0

이것은 또한 좋은 해결책입니다. –