Когда вы звоните glColor
, вы устанавливаете постоянный цвет для всех будущих обратных вызовов. Если вы хотите, чтобы он вернулся к тому, что было, когда вы начали, вы должны явно установить его обратно после рисования вашего квадрата.
Обычно (в зависимости от среды текстуры) цвет вершин и постоянный цвет объединяются во время вершинного затенения, затем интерполируются и затем умножаются на цвет текселя при затенении фрагментов.
Если вы используете glColor3f(1,0,0)
, вы получите умножение красного канала текстуры на 1.0, а зеленые и синие каналы на 0,0 - так что вы получите только красный канал текстуры.
Вам необходимо сбросить свой постоянный цвет до 1,1,1, чтобы увидеть обычный цвет текстуры.
Вообще говоря, вам нужно будет установить все ваше общее состояние gl за раз, а затем «вернуться» к этому состоянию после того, как вы нарисуете все, что требует необычных изменений. Это иногда называют «нулевым состоянием». Вы также заметите, что в большой литературе по настройке производительности предлагается группировать вещи, которые имеют похожие необычные ненужные состояния - это может иметь или не иметь эффекта в зависимости от графических драйверов, оборудования и т. Д.
Мне нравится это лучше, чем мой ответ. +1 для вас! – leander
@leander: Хе-хе, я просто поддержал ваш ответ, потому что я чувствовал, что он отвечает на вопрос так же хорошо, как и мой. – derhass
: подсказки шляпы: Спасибо вам любезно =) – leander