glColor3i只绘制黑色

时间:2010-10-24 19:29:58

标签: xcode opengl osx-snow-leopard

为什么这只画黑色?

 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();

2 个答案:

答案 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()一起阅读效果不佳。