2013-09-24 3 views
0

Я использую вершинные и фрагментарные шейдеры, GLSL версии 130. Ubuntu 12.04 LTS. Шейдеры работают нормально. Освещение отключено.установить растровый цвет для glutBitmapCharacter при использовании шейдеров

Текст нарисован ОК glutBitmapCharacter(), но в непредсказуемом цвете. Когда я настраиваю палитру, используемую шейдерами, и перекомпилирую, цвет меняется.

glColor4f() не имеет никакого эффекта, конечно, поскольку шейдеры переопределяют поведение фиксированного контура. Итак, как я могу установить «растровый цвет», который будет отображать glutBitmapCharacter()? (Или должен каждый кадр использовать шейдеры и затем фиксированный трубопровод Yuck?).

ответ

1

Пожалуйста, говорите со мной: Я не буду смешивать OpenGL растровых операций с программируемым трубопроводом. Как вы узнали, результат довольно, ошибочно, раздражает.

Также растровые операции полностью удалены из современного OpenGL (т. Е. Все выше, включая OpenGL-3.0). Попытка использовать их вместе с шейдерами - это чистый мазохизм. И даже больно смотреть, как другие люди пытаются это сделать. Поэтому, пожалуйста, не надо.

Или должен ли каждый кадр использовать шейдеры, а затем фиксированный трубопровод?

Вы можете переключаться между фиксированной функцией и шейдерами в любое время. Используйте glUseProgram(0) для переключения на фиксированную функцию, когда вам это нужно. Что было бы при использовании растровых операций. Но при использовании растровых операций вы, конечно, ограничены OpenGL-2.1.

+0

Благодарим вас за предоставление более широкого контекста (и обширной коллекции драматических риторических устройств!). Итак, ответ на вызов glUseProgram (0) перед glutBitmapCharacter()? –

+0

@CamilleGoudeseune: Я предлагаю отключить шейдеры перед вызовом glRasterPos, которые вам нужно сделать, чтобы разместить текст на экране. – datenwolf

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