OpenGl纹理映射阻止FreeType上的颜色?

时间:2010-04-25 23:48:35

标签: opengl freetype

我正在使用FreeType以允许在OpenGL中使用字体。但是,我遇到了一个问题,即每当我进行纹理贴图时我都无法更改字体颜色。无论我使用glColor3f选择什么,它都会变成白色。纹理很好。

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 个答案:

答案 0 :(得分:1)

修正了它。在我禁用纹理后,我忘了将环境设置回调制:

glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);

在禁用纹理/混合后添加此项可修复问题。