glColor 不起作用,出现随机颜色

Posted

技术标签:

【中文标题】glColor 不起作用,出现随机颜色【英文标题】:glColor not working, random color appearing 【发布时间】:2011-11-21 15:47:45 【问题描述】:

我的代码有问题,但对于我绘制的任意数量的基元,尽管调用了 glClearColor 然后使用 glColor3f 选择颜色,但出现的颜色是完全随机的...

所以在我的渲染类中,我循环遍历所有对象并调用它们的绘图方法,对于它们看起来像的图元:

inline void PrimitiveDrawer::drawWireframePrism(Vector3 pos, float radius, Vector3 col)

    glClearColor( 1.0f, 1.0f, 1.0f, 1.0f );
    glColor3f(col.x, col.y, col.z);

    glLineWidth(3);
    glBegin (GL_LINE_LOOP); 
        ...
glEnd()

但无论我选择什么颜色,我总是得到不同的颜色......有趣的是,我用这种方法绘制的所有原始线都假定它们绑定的模型的颜色(它们是网格的边界体积)... 可能与我使用的模型加载器有关吗?

这会影响每个形状(模型周围的形状除外),其中每个 GL_LINE 都采用相同的颜色(出于某种原因为绿色),包括我试图绘制的 glutBitMapCharacter...这是困扰我的主要想法因为我想为文本绘图选择颜色,目前我正在做:

void renderBitmapString(float x, float y, void *font,char *string)


  char *c;
  glRasterPos2f(x, y);
  for (c=string; *c != '\0'; c++) 
    glutBitmapCharacter(font, *c);
  


void drawText(char text[20], float x, float y)
    glPushMatrix();
    setOrthographicProjection();
    glLoadIdentity();
    glClearColor( 0, 0, 0, 0 );
    glColor4f(0, 0, 1, 1);
    renderBitmapString(x, y,(void *)font, text);
    resetPerspectiveProjection();
    glPopMatrix();

但是文本显示为绿色而不是蓝色?

【问题讨论】:

你为什么一直打电话glClearColor,完全没用,除非后面跟着glClear 【参考方案1】:

glClearColorglColor 无关。 glClearColor 设置用于调用 glClear(GL_COLOR_BUFFER_BIT) 的颜色以清除帧缓冲区。

从其他对象绘制的颜色听起来对我来说,你忘记禁用纹理。画完带纹理的东西后添加glDiable(GL_TEXTURE_2D);

【讨论】:

问题是照明。我意识到必须在绘制线条或文本之前禁用 GL_LIGHTING,并确保在每次使用后禁用 GL_TEXTURE_2D,就像 Datenwolf 建议的那样......它现在可以工作了!

以上是关于glColor 不起作用,出现随机颜色的主要内容,如果未能解决你的问题,请参考以下文章

div中的背景颜色在iphone中不起作用

OpenGL顶点缓冲区对象不起作用

根据索引为 tableview 单元格按钮提供不同的颜色。这在 WilldisplayCell 和 CellForROwAt 级别都不起作用

颤振平面按钮颜色属性不起作用

UItableviewCell 的背景颜色不起作用

随机列表生成不起作用