glColor不工作,随机颜色出现

时间:2011-11-21 15:47:46

标签: c++ opengl

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

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

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

但文字是绿色而不是蓝色?

1 个答案:

答案 0 :(得分:6)

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

来自其他对象的颜色听起来对我说,你忘了禁用纹理。在完成绘制纹理内容后添加glDiable(GL_TEXTURE_2D);