Необходимо включить двумерное текстурирование, см. glEnable
:
glEnable(GL_TEXTURE_2D);
Если текстурирование включено, то по умолчанию цвет текселя умножается на текущий цвет, потому что по умолчанию режим текстурной среды (GL_TEXTURE_ENV_MODE
) равен GL_MODULATE
. См. glTexEnv
.
Это приводит к тому, что цвет текстур текстуры «смешивается» с последним цветом, который вы установили с помощью glColor
.
Установите «белый» цвет перед рендерингом текстуры, чтобы решить вашу проблему:
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
Отключите двухмерное текстурирование после рисования четырехугольника:
glEnable(GL_TEXTURE_2D);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex2i(0, 0);
glTexCoord2f(0, 1); glVertex2i(0, 255);
glTexCoord2f(1, 1); glVertex2i(255, 255);
glTexCoord2f(1, 0); glVertex2i(255, 0);
glEnd();
glDisable(GL_TEXTURE_2D);