Фреймбуферы, текстуры и поведение glColor в OpenGL / OpenGL ES

StackOverflow https://stackoverflow.com/questions/1070209

Вопрос

Заранее приношу извинения, если этот вопрос покажется вам запутанным.Поведение, которое я наблюдаю, не имеет для меня никакого смысла.

У меня есть рендеринг фреймбуфера в текстуру.Я добавляю к этой текстуре сплошные прямоугольники красного, зеленого, синего цветов различной непрозрачности.Затем я выводю текстуру на экран (фреймбуфер 0).Фреймбуфер, прикрепленный к текстуре, является постоянным, и в каждом цикле рендеринга я рисую больше прямоугольников для текстуры, в конечном итоге заполняя экран.

Я обнаружил, что если я не установлю glColor() для достижения 100% непрозрачности белого цвета перед отображением текстуры на экране прямоугольники определенных цветов отображаться не будут.То есть , если glColor(1.f, 0.f, 0.f, 1.f) устанавливается перед рендерингом текстуры, будут нарисованы только синие прямоугольники.

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

Спасибо.

Это было полезно?

Решение

Помимо прочего, glColor() задает цвет, используемый для вершины.Когда текстурированный прямоугольник нарисован, каждый образец текселя умножается на цвет вершины.Ну, на самом деле, линейная интерполяция вершин примитива, которая является просто цветом вершины, если все вершины имеют одинаковый цвет.

В этом руководстве довольно хорошо объясняются последствия всего этого:

http://www.falloutsoftware.com/tutorials/gl/gl4.htm

Единственной странной частью здесь является ваше утверждение о том, что glColor (1, 0, 0, 1) вызывает рисование только синих прямоугольников.Я бы ожидал, что это будут только красные прямоугольники, если параметрами glColor являются красный, зеленый, синий и альфа.Надеюсь, здесь опечатка или порядок параметров отличается таким образом, что red = 0, green = 0, blue = 1 и alpha = 1.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top