Frage

Wer weiß, wie ich die folgende Wirkung in OpenGL erreichen kann:

  • ändern Sie die Helligkeit der wiedergegebenen Szene
  • oder Gamma-Einstellung in OpenGL Implementierung

Ich habe versucht, durch den Umgebungsparameter des Lichts und die Art des Lichts (Richtungs- und omnidirektional) ändern, aber das Ergebnis war nicht einheitlich. TIA.

Danke für Ihre Hilfe, einige zusätzliche Informationen:   * Ich kann keine Fenster Besonderheiten API verwenden.   * Die Gamma-Einstellung sollte das gesamte Fenster nicht beeinflussen, wie ich unterschiedlichen Gamma für verschiedene Ansichten habe.

War es hilfreich?

Lösung

Auf win32 können Sie SetDeviceGammaRamp verwenden, um die Gesamthelligkeit / Gamma einzustellen. Dies ist jedoch das gesamte Display wirkt, so dass es nicht eine gute Idee, es sei denn, Ihre Anwendung Vollbild ist.

Die tragbare Alternative ist die gesamte Szene heller oder dunkler entweder zu ziehen (was lästig ist) oder ein Vollbild-alpha-blended quad über die gesamte Szene zu schlagen sie aufgehellt oder abgedunkelt, wie gewünscht. Keiner dieser Ansätze können sich auf die Gamma-Kurve, nur die Gesamthelligkeit; die Gamma einzustellen Sie die gesamte Szene in eine Textur greifen müssen und es dann über einen Pixel-Shader auf den Bildschirm übertragen zurück, die jedes Texels durch eine Gamma-Funktion ausgeführt wird.

Ok, die aktualisierte Frage gelesen zu haben, was Sie brauchen, ein Quad ist mit Mischen eingerichtet, um alles unter ihm zu verdunkeln oder aufhellen. ZB.

if( brightness > 1 )
{
    glBlendFunc( GL_DEST_COLOR, GL_ONE );
    glColor3f( brightness-1, brightness-1, brightness-1 );
}
else
{
    glBlendFunc( GL_ZERO, GL_SRC_COLOR );
    glColor3f( brightness, brightness, brightness );
}
glEnable( GL_BLEND );

draw_quad();

Andere Tipps

http://www.gamedev.net/community/forums /topic.asp?topic_id=435400 könnte eine Antwort auf Ihre Frage sein, sonst könnten Sie wahrscheinlich eine Gamma-Korrektur als Pixel-Shader implementieren

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