Pergunta

Peço desculpas antecipadamente se esta questão parece confuso. O comportamento que eu estou vendo não faz sentido para mim.

Eu tenho uma prestação Framebuffer para uma textura. Presto retângulos sólidos de vermelho, verde, azul de diferentes opacidade para esta textura. Eu, então, processar a textura para a tela (Framebuffer 0). O Framebuffer ligado à textura é persistente, e em cada tornar circuito I desenhar mais retângulos para a textura -. Eventualmente, enchendo a tela

Eu descobri que se eu não definir glColor() para branco opacidade 100% antes de renderizar a textura para a tela, retângulos de cores específicas não vai ser processado. Isto é, se glColor(1.f, 0.f, 0.f, 1.f) está definido antes de renderizar a textura, apenas os retângulos azuis serão sorteados.

Eu não entendo por que a cor atual teria um efeito sobre a prestação da textura (que eu suponho que é como um blit). Eu tentei várias chamadas texParameter(...) sem sucesso, mas eu estou apenas adivinhando.

Graças.

Foi útil?

Solução

Entre outras coisas, glColor () define a cor usada para um vértice. Quando o rectângulo texturizada é desenhado, cada amostra texel é multiplicado pela cor vértice. Bem, na verdade, um interpoloation linear dos vértices do primitivo que é simplesmente a cor vértice se todos os vértices têm a mesma cor.

Este tutorial explica as implicações de tudo isto muito bem:

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

A única parte estranha aqui é a sua afirmação de que glColor (1, 0, 0, 1) faz com que apenas retângulos azuis a ser desenhado. Eu esperaria que isso seja apenas retângulos vermelhos se os parâmetros para glColor são vermelho, verde, azul e alfa. Esperamos que há um erro ou o fim parâmetro é diferente de tal modo que red = 0, = 0 verde, azul = 1 e alfa = 1.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top