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
Antwort
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.
- 1. Guter Ersatz für Qt
- 2. Ersatz für GL_LUMINANCE_ALPHA im Kernprofil?
- 3. Funken Ersatz für VORHANDEN und IN
- 4. Ersatz für veraltete UiApp und UiInstance
- 5. ViewDidUnload und ShouldAutorotateToInterfaceOrientation Ersatz für MonoTouch
- 6. Clojure Ersatz für ADTs und Pattern Matching?
- 7. CDI-Ersatz für @ManagedProperty
- 8. Leichter Ersatz für System.Data.DataTable
- 9. Ersatz für XML-Serialisierung
- 10. Ersatz für UDC, Nutzungsdatensammler?
- 11. PHP Ersatz für safe_mode
- 12. Regex Ersatz für Streifen()
- 13. SYSGEN_SYSISAPI Ersatz für WinCE6
- 14. Ersatz für Python statvfs?
- 15. CGAL Ersatz für iOS
- 16. Ersatz für JAXMServlet?
- 17. Ersatz für Endlosschleife
- 18. Ersatz für veraltete eregi
- 19. UIDatePicker Ersatz für tvOS?
- 20. WinAPI Ersatz für reg.exe
- 21. Ersatz für apache.http.client Bibliothek
- 22. Ersatz für Neuronale Netze
- 23. Ersatz für binary_function
- 24. EasyMock Ersatz für SetReturnValue
- 25. WinRT Ersatz für System.ComponentModel.TypeConverter
- 26. Leichter Ersatz für Bootstrap
- 27. GLUT Ersatz für AUX_RGBImageRec?
- 28. für Cursor Ersatz suchen
- 29. Ersatz für async/erwarten
- 30. Ersatz für veraltet `WrappingNeoServerBootstrapper`
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. –