Ich schrieb Shader für diffuse Blitze.
Normalen, die im Vertex Shader berechnen: normal = gl_NormalMatrix * gl_Normal;
Aber wenn ich die Kamera rotiere, fangen auch die Normalen an, mit der Kamera zu rotieren. Wie man es repariert?Warum Normale mit der Kamera rotieren?
0
A
Antwort
1
Sie müssen Ihre normale Matrix falsch generieren.
NormalMatrix = transpose(inverse(ModelMatrix * ViewMatrix))
Auch wenn Sie gezwungen sind, gl_NormalMatrix und gl_Normal zu verwenden, sollten Sie Shader-Uniformen und in Variablen verwenden, und die Matrizen selbst, anstatt mit dem älteren Modell berechnen.
Wenn Sie nicht wissen, wie das geht, sollten Sie ein Tutorial zu OpenGL 4 finden, um die programmierbare Shader-Pipeline zu lernen. OGLDev ist ziemlich gut.
Wie kann ich ModelMatrix und ViewMatrix im Vertex-Shader bekommen? – NoName
@NoName ".. Sie sollten Shader-Uniformen verwenden". Außerdem empfehle ich [Learn OpenGL] (http://learnopengl.com/#!Getting-started/Shaders) über OGLDev. Ich habe 10-20 verschiedene OGL Tutorials ausgewertet, und dieses hat bei weitem die genauesten Informationen bezüglich moderner OGL. – Dan
@Dan Danke, ich habe Änderungen in Ihrer Antwort gesehen. Danke, OGLDev ist eine gute Ressource. – NoName