Рисование многоугольника с цветом в OpenGL вызывает изменение цвета текстуры - PullRequest
1 голос
/ 04 марта 2012

Я работаю над программой моделирования, которая рисует точки и другие примитивы поверх большого 2D-прямоугольника с отображенной на нем текстурой.

Проблема в том, что когда я рисую многоугольник и задаю цветдля вершин, использующих glColor3f, этот цвет влияет на цвета текстуры, а не только на нарисованный мною многоугольник.Таким образом, рисование красного многоугольника кажется «кровоточащим» на всю текстуру, и все выглядит красноватым.

Я попытался это исправить, используя glDisable (GL_TEXTURE_2D) до рисования многоугольника и затем снова включив.Но это, похоже, не имеет никакого эффекта.

1 Ответ

4 голосов
/ 04 марта 2012

glColor3f изменяет цвет всего, что вы рисуете после его вызова, так как вы устанавливаете цветовое состояние OpenGL. Так работает OpenGL в целом. (glTranslate/Rotate/Scalef, glMultMatrix, glLoadIdentity и т. Д. Работают так же, как они изменяют состояние преобразования, используя матрицу, выбранную состоянием режима матрицы (устанавливается с помощью glMatrixMode))

Чтобы "сбросить" цвет до значения по умолчанию, позвоните glColor3f(1.0f, 1.0f, 1.0f);

...