2009-08-24 3 views
1

Ich möchte die Helligkeit auf eine Textur in OpenGL-Rendering erhöhen. Wie macht es hell rot oder weiß. Dies ist eine 2D-Rendering-Umgebung, in der jedes Sprite als Textur einem OpenGL-Polygon zugeordnet wird. Ich weiß wenig über die Manipulation von Daten, und meine Engine arbeitet mit einem Textur-Cache, also würde die Änderung der gesamten Oberfläche alle Auswirkungen auf die Textur haben. Ich kann den Effekt simulieren, indem ich eine "Maske" habe und sie überlagere. Dadurch kann ich das Sprite mit Volltonfarben versehen, aber das nimmt mir den Speicher. Gibt es eine andere Lösung?Ändern der Helligkeit bei OpenGL-Textur

Antwort

2

Wenn Ihre Anforderung es leisten kann, können Sie immer einen sehr einfachen GLSL-Fragment-Shader schreiben, der dies tut. Es ist buchstäblich ein Einliner.
Etwas wie:

uniform sampler2d tex; 
void main() 
{ 
    gl_FragColor = texture2d(tex, gl_TexCoord[0]) + gl_Color; 
} 
+0

+1 für ein Beispiel geben. Du solltest wahrscheinlich lieber Shader anstelle der festen Pipleline verwenden, es ist einfach viel flexibler – jcoder

0

Verwenden Sie GL_MODULATE, um die Texturfarbe mit der aktuellen Farbe zu multiplizieren.
siehe das Textur-Tutorial in this page.

+0

Es funktioniert nicht so gut, und es ist der Standard es scheint, also verwende ich es bereits. Wenn Sie ein Sprite verwenden und die Farbe (1,0,0) (volles Rot) einstellen, werden Grün und Blau vom Sprite entfernt. Ich möchte eigentlich rot hinzufügen, anstatt die anderen beiden Komponenten zu entfernen. –