2017-12-05 4 views
0

Ich versuche, etwas Code zu verstehen, während ich OpenGL lerne. Ich kam über die Verwendung von GL_LIGHT_MODEL_COLOR_CONTROL und GL_SEPARATE_SPECULAR_COLOR beim Versuch, eine Open-Source-Datei zu kompilieren, aber es heißt, sie waren nicht im Geltungsbereich deklariert. Ich habe ein wenig gesucht und herausgefunden, dass sie in GL 3.1 entfernt wurden. Ich wollte wissen, was ein guter Ersatz wäre, anstatt sie in diesem Code zu verwenden und wozu sie bestimmt sind.Ersatz für GL_SEPARATE_SPECULAR_COLOR und GL_LIGHT_MODEL_COLOR_CONTROL OpenGL

+0

Sie sollten wahrscheinlich nicht zufällig Code aus dem Internet greifen und versuchen, OpenGL daraus zu lernen. Es wäre eine Sache, wenn es Teil eines Tutorials wäre, aber dann würde das Tutorial erklären, was es bedeutet und wie es funktioniert. –

Antwort

0

Der Ersatz für sie heißt "Sie müssen jetzt Shader schreiben". Das heißt, Sie schreiben den Lichtcode selbst, der auf der GPU ausgeführt wird.

In fixed-function lighting model (das wiederum nicht mehr in core profile OpenGL existiert), werden die diffuse Farbe und die Spiegelfarbe für Lichter normalerweise pro Vertex addiert. Die Texturumgebung sieht also nur eine einzige Farbe pro Vertex.

Die Trennung der Spiegelfarbe bedeutet, dass die spiegelnden und diffusen Farben vom Licht getrennt sind. Die Texturumgebung sieht also ein Paar Farben: eine für die diffuse Beleuchtung und eine für die Spiegelung.

Der Zweck davon ist es, die diffuse Beleuchtung mit der Texturfarbe zu multiplizieren und dann die spiegelnde Farbe zu dem Ergebnis hinzuzufügen. Das heißt, es ermöglicht die Gleichung (T * Diffuse) + Specular zu arbeiten. Wenn Sie die Spiegelfarbe nicht trennen, haben Sie T * (Diffuse + Specular). Dies bedeutet, dass die Texturfarbe sowohl die Glanzlichtfarbe als auch den diffusen Wert beeinflusst. Während dies manchmal das ist, was Sie wollen, werden Sie öfter wollen, dass sie getrennt sind, da das spiegelnde Highlight basierend auf einer separaten Farbe von der diffusen Beleuchtung getönt wird.