Domanda

Mi scuso in anticipo se questa domanda sembra confuso. Il comportamento che sto vedendo non ha senso per me.

Ho un Framebuffer rendering una texture. Mi rendo rettangoli solidi di colore rosso, verde, blu di varia opacità a questa texture. Ho poi rendere la consistenza allo schermo (Framebuffer 0). Il framebuffer annesso alla struttura è persistente, e in ogni ciclo di rendering ho disegnare più rettangoli per la texture -. Poi riempire lo schermo

Ho trovato che, se non imposto glColor() al bianco 100% di opacità prima del rendering della texture per lo schermo, non saranno resi rettangoli di colori particolari. Cioè se glColor(1.f, 0.f, 0.f, 1.f) è impostato prima del rendering della texture, saranno estratti solo i rettangoli blu.

Non capisco il motivo per cui il colore corrente dovrebbe avere un effetto sulla resa della trama (che presumo è come un blit). Ho provato varie chiamate texParameter(...) senza alcun risultato, ma io sono solo indovinare.

Grazie.

È stato utile?

Soluzione

Tra le altre cose, glColor () imposta il colore usato per un vertice. Quando il rettangolo strutturato viene disegnato, ogni campione texel viene moltiplicata dal colore vertice. Beh, in realtà, un interpoloation lineare dei vertici del primitivo che è semplicemente il colore dei vertici se tutte le verticies hanno lo stesso colore.

Questo tutorial spiega le implicazioni di tutto questo abbastanza bene:

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

L'unica parte strana qui è la sua dichiarazione che glColor (1, 0, 0, 1) provoca solo rettangoli blu da trarre. Mi aspetterei che per essere solo i rettangoli rossi se i parametri per glColor sono di colore rosso, verde, blu e alfa. Auspicabilmente c'è un errore di battitura o l'ordine dei parametri è diverso tale che rosso = 0, verde = 0, blu = 1 e alfa = 1.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top