【问题标题】:glColor3i only drawing blackglColor3i 只画黑色
【发布时间】:2010-10-24 19:29:58
【问题描述】:

为什么只画黑色?

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

【问题讨论】:

  • 另外,尝试使用和不使用以下内容:glDisable (GL_BLEND); glDisable (GL_DITHER); glDisable (GL_FOG); glDisable (GL_LIGHTING); glDisable (GL_TEXTURE_1D); glDisable (GL_TEXTURE_2D); glDisable (GL_TEXTURE_3D); glShadeModel (GL_FLAT);

标签: xcode opengl osx-snow-leopard


【解决方案1】:

从记忆中,我认为 glColor3i 使用缩放以覆盖整个整数范围的颜色值。因此,您的 255 个值大约等于零.....

改用 2147483647。

【讨论】:

  • 是的,如果要使用 0-255 范围,请使用 glColor3ub(255, 0, 255);
【解决方案2】:

所有类型化的整数 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() 结合使用不会很好读。

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2021-11-26
    • 2013-05-05
    • 2015-06-07
    • 1970-01-01
    • 2018-04-27
    • 2021-01-15
    • 2021-01-07
    相关资源
    最近更新 更多