2010-04-25 75 views
0

我正在使用FreeType以允许在OpenGL中使用字体。但是,我遇到了一个问题,即无论何时执行纹理映射都无法更改字体颜色。不管我用glColor3f选择什么,它都会变成白色。纹理工作正常。FreeType上的OpenGl纹理映射阻塞颜色?

glClear(GL_COLOR_BUFFER_BIT); 

glLoadIdentity(); 

glColor3f(0.5,0.0,0.5); 
glPushMatrix(); 
glEnable(GL_BLEND); 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

    glEnable(GL_TEXTURE_2D); 
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); 
    glBindTexture(GL_TEXTURE_2D, texName); 
    glBegin(GL_POLYGON); 
     glTexCoord2f(0,1); glVertex2f(-16,-16); 
     glTexCoord2f(0,0); glVertex2f(-16,16); 
     glTexCoord2f(1,0); glVertex2f(16,16); 
     glTexCoord2f(1,1); glVertex2f(16,-16); 
    glEnd(); 
    glDisable(GL_TEXTURE_2D); 

    glDisable(GL_BLEND); 
glPopMatrix(); 
    glColor3f(1,0,0); 
print(our_font, -300+screenWidth/2.0, screenHeight/2.0, "fifty two - %7.2f", spin); 

这是问题代码,我可以确认在此代码下绘制多边形确实会使其变为红色。文本不会变成红色,但它应该;如果你删除上面的纹理贴图,它会再次变成红色,我只能认为这是启用和禁用的问题,我忘记了做些什么......?

回答

1

修正了它。刚刚禁用贴图之后,我忘记将环境设置为调制模式:

glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);

禁用纹理/混合修复问题之后加入此。