为什么这只画黑色?
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 :(得分:13)
从内存来看,我认为glColor3i使用缩放的颜色值来覆盖整个整数范围。因此,您的255个值大约等于零.....
请尝试2147483647.
答案 1 :(得分:3)
所有类型化的整数gl入口点都具有此范围行为。浮点变体使用标准化值:0.0 - 1.0。 glColor设置当前顶点颜色,如果没有启用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)。
使用INT_MAX或~20亿的整数值与glColor3i()一起阅读效果不佳。