Ich habe gerade herausgefunden, dass OpenGL integrierte Beleuchtung, die mit glEnable(GL_LIGHTING);
aktiviert werden kann. Warum verwenden Tutorials usw. eine benutzerdefinierte, die mit Shadern erstellt wurde? Dafür muss es einen Grund geben. Was macht die eingebaute Beleuchtung schlechter?OpenGL mit integrierten Beleuchtung oder benutzerdefinierte one mit Shadern
Antwort
OpenGL hat integrierte Beleuchtung
Nein, tut es nicht. Alle diese Dinge waren removed from OpenGL in 3.1 and put into the compatibility profile. Welches ist nicht benötigt, um unterstützt zu werden.
Was macht die eingebaute Beleuchtung schlechter?
Alles. Es macht alles schlimmer.
Feste Funktionsbeleuchtung ist per-Vertex, während Shader-basierte Beleuchtung kann was auch immer Sie wollen: per-Vertex, pro-Fragment, was auch immer. Beleuchtung mit fester Funktion funktioniert nicht mit verzögertem Rendering, Vorpassagen mit Beleuchtung oder verschiedenen anderen Rendertechniken. Leuchten mit fester Funktion können keine HDR- oder Gammakorrekte Beleuchtung verarbeiten.
Es gibt nichts, was Fixed-Function-Beleuchtung kann, dass benutzerdefinierte Beleuchtung nicht kann. Zwar gibt es eine Menge Dinge, die benutzerdefinierte Beleuchtung tun kann, die feste Funktion nicht kann.
Es ist gut, dass moderne OpenGL-Tutorials diesen veralteten Müll nicht lehren.
Wie wäre es mit glShadeModel (GL_SMOOTH). Ist es gut zu verwenden oder sollte ich einen benutzerdefinierten im Geometrieshader erstellen? – Maineri
- 1. OpenGL: Linien mit Shadern
- 2. OpenGL - Schalter Shadern
- 3. OpenGL Farbe funktioniert nicht mit Beleuchtung
- 4. Beleuchtung in OpenGL verstehen
- 5. iOS mit OpenGL-Shadern in CIKernel
- 6. QGLShaderProgram OpenGL Shadern
- 7. Seltsame quadratische Beleuchtung Artefakte in OpenGL
- 8. OpenGL diffuse Beleuchtung auf Android
- 9. Beleuchtung funktioniert nicht in opengl
- 10. Performance-Profiling von OpenGL-Shadern
- 11. Glättung von Tangenten mit vorhandenen Normalen. OpenGL Beleuchtung
- 12. Cocos2d Unschärfe mit Shadern
- 13. OpenGL ES2.0: Was ist los mit diesen Shadern?
- 14. OpenGL mehrere Draw-Aufrufe mit eindeutigen Shadern gibt leeren Bildschirm
- 15. OpenGL Deferred Shading-Beleuchtung funktioniert nicht richtig
- 16. Realistische Beleuchtung (Sonnenlicht) mit Three.js?
- 17. Android OpenGL ES 1.0 Beleuchtung Position, Richtung und Cutoff
- 18. Opengl 4.3: Mit One SSBO Objekt in Vertex & Fragment Shader
- 19. OpenGL + VC++ - Beleuchtung zufällig in Release-Konfiguration durcheinander
- 20. Android OpenGL Beleuchtung hängt von der Gesichtsgröße ab
- 21. Zeichnung Antialiased Kreis mit Shadern
- 22. Dekonvolution mit Metal Performance Shadern
- 23. Wie deklariere ich die OpenGL-Version in Shadern auf Android?
- 24. Typing mit integrierten Kartenfunktion
- 25. QPainter über OpenGL in QGLWidget bei der Verwendung von Shadern
- 26. ein Sonnensystem in opengl anlegen - Beleuchtung nicht wie geplant
- 27. DirectX Beleuchtung
- 28. Namenskonflikt mit integrierten Funktion
- 29. OpenGL ES 2.0 - Wie zeichne ich nur einen Teil der Textur mit Shadern?
- 30. 2D Tile basierte glatte Beleuchtung
"eingebaute Beleuchtung" verwendet Gouraud-Schattierung. Während die Gouraud-Schattierung das Licht im Vertex-Shader berechnet, berechnet die Phong-Schattierung das Licht im Fragment-Shader - siehe [GLSL-Fragmentprogramm-Ersatzfunktion] (https://stackoverflow.com/questions/8421778/glsl-fixed-function-). Fragment-Programm-Ersatz/45716107 # 45716107) – Rabbid76