Установка цвета glutBitmapCharacter? - PullRequest
8 голосов
/ 17 апреля 2010

Просто интересно, может ли кто-нибудь помочь мне отследить мою проблему с помощью следующего кода, где цвет текста не устанавливается правильно (он просто отображает любой цвет на заднем плане)

void RenderText(int x, int y, const char *string)
{
int i, len;

glUseProgram(0);

glLoadIdentity();
glColor3f(1.0f, 1.0f, 1.0f);
glTranslatef(0.0f, 0.0f, -5.0f);
glRasterPos2i(x, y);

glDisable(GL_TEXTURE_2D);
for (i = 0, len = strlen(string); i < len; i++)
{
    glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int)string[i]);
}
glEnable(GL_TEXTURE_2D);
}

Я проверил все обычные вещи (я думаю), отключил текстурирование, установил цвет перед растровым размещением и т. Д. Я отключил шейдеры, но у меня все еще есть проблемы

Ответы [ 3 ]

9 голосов
/ 23 ноября 2011

Похоже, вы забыли glDisable(GL_LIGHTING) перед тем, как нарисовать строку.

3 голосов
/ 20 марта 2011

Цвет не сохраняется ни с одним растровым изображением OpenGL (это то, что glutBitmapCharacter создано. Растровое изображение является монохромным и сохраняет только форму.

Когда отображается растровое изображение (например, glBitmap или, возможно, glDrawLists), используется текущий растровый цвет. Цвет растра не всегда совпадает с активным цветом, см. http://www.opengl.org/wiki/Coloring_a_bitmap.

0 голосов
/ 20 марта 2011

Цвет обычно контролируется с помощью функции glColor3f, поэтому, если текст белого цвета и его не должно быть, тогда должны помочь следующие изменения:

glLoadIdentity();
glColor3f(0.5f, 0.5f, 0.5f);     //<-- this line controls the color (now text is gray)
glTranslatef(0.0f, 0.0f, -5.0f);
glRasterPos2i(x, y);

Кроме того, вызывать glDisable (GL_TEXTURE_2D) и glEnable (GL_TEXTURE_2D) не нужно. Вместо этого вы можете просто вызвать glBindTexture (GL_TEXTURE_2D, 0), чтобы отключить текстуры, а затем использовать ту же функцию для установки активной текстуры. Обязательно вызовите glEnable (GL_TEXTURE_2D) в вашей функции инициализации.

...