2010-04-25 2 views
0

Я использую FreeType, чтобы разрешить использование шрифтов в OpenGL. Тем не менее, у меня возникла проблема, когда я не могу изменить цвет шрифта всякий раз, когда я рисую текстуру. Независимо от того, что я выбираю с помощью glColor3f, он просто выйдет белым. Текстура отлично работает.Отображение текстур OpenGl, блокирующих цвета на FreeType?

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

Добавление этого параметра после отключения текстуры/смешивания устраняет проблему.

Смежные вопросы