Frage

ich im Voraus entschuldigen, wenn diese Frage scheint verwirrt. Das Verhalten Ich sehe macht keinen Sinn für mich.

Ich habe ein Framebuffer auf eine Textur-Rendering. Ich mache feste Rechtecke von Rot, Grün, Blau der Undurchsichtigkeit dieser Textur variiert. Ich mache dann die Textur auf den Bildschirm (Framebuffer 0) gewonnen. Der Framebuffer auf die Textur angebracht ist hartnäckig, und in jeder Schleife macht ich mehr Rechtecken auf die Textur ziehen -. Schließlich den Bildschirm füllen

Ich habe festgestellt, dass, wenn ich vor dem Rendern die Textur nicht glColor() auf weiß 100% Deckkraft Rechtecken von bestimmten Farben auf den Bildschirm, werden nicht wiedergegeben werden. Das ist, wenn glColor(1.f, 0.f, 0.f, 1.f) vor dem Rendern die Textur gesetzt ist, werden nur die blauen Rechtecke gezeichnet werden.

Ich verstehe nicht, warum die aktuelle Farbe eine auf die Wiedergabe der Textur beeinflussen würde (was ich wie ein blit nehmen ist). Ich habe ohne Erfolg verschiedene texParameter(...) Anrufe versucht, aber ich kann nur raten.

Danke.

War es hilfreich?

Lösung

Unter anderem glColor () setzt die Farbe für einen Scheitelpunkt verwendet. Wenn die texturierte Rechteck gezeichnet wird, wird jedes Texels Probe durch die Scheitelpunktfarbe multipled. Nun, eigentlich eine lineare interpoloation der Eckpunkte der Primitive, das ist einfach der Scheitelpunktfarbe, wenn alle verticies die gleiche Farbe haben.

Dieses Tutorial erklärt die Auswirkungen all dies ziemlich gut:

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

Der einzige ungeradee Teil hier ist Ihre Aussage, dass glColor (1, 0, 0, 1) bewirkt, dass nur blaue Rechtecken gezeichnet werden. Ich würde erwarten, dass nur rote Rechtecke, wenn die Parameter zu glColor sind rot, grün, blau und alpha sein. Hoffentlich gibt es einen Tippfehler oder der Parameter, um verschiedene, so dass Rot = 0, Grün = 0, Blau = 1 und alpha = 1.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top