我有这个代码,它是上下文“#version 330 core”
gl_Position = PerspectiveViewMatrix(90.0, AspectRatio, 0.01, 1000.0 )
* TranslationMatrix(0, 0, -4 -0.35*MouseWheel)
* RotationMatrix(MouseMovement.y, X_AXIS)
* RotationMatrix(-MouseMovement.x, Y_AXIS)
* RotationMatrix(float(Strafing*3), Z_AXIS)
* TransformationMatrix
* in_Vertex;
哪一部分是旧的gl_ModelViewMatrix,哪一部分是gl_ModelViewProjectionMatrix? (用于创建 ModelViewProjection 的 gl_ProjectionMatrix 是什么?)
我对 GLSL 3.3 不太熟悉,但我敢打赌 PerspectiveViewMatrix (它甚至是内置功能吗?)构造了替换旧内置 gl_ProjectionMatrix 的矩阵
gl_ModelViewMatrix 一般是对象在世界空间中的变换矩阵与其自身“局部”变换的乘积,因此它可以定义为 TranslationMatrix、RotationMatrix 和 TransformationMatrix 的乘积。
您需要自己将所有矩阵发送到着色器,例如作为制服。您需要自己构建这些矩阵(例如使用GLM http://glm.g-truc.net/)。投影矩阵的惰性示例:
// in your app
std::array<GLfloat, 16> projection;
glMatrixMode(GL_PROJECTION);
glPushMatrix();
gluOrtho(...);
glGetFloatv(GL_PROJECTION_MATRIX, projection.data());
glPopMatrix();
glUniformMatrix4fv(glGetUniformLocation(ShaderProgramID, "ProjectionMatrix"), 1, GL_FALSE, projection.data());
// in vertex shader
uniform mat4 ProjectionMatrix;
in vec4 InVertex;
void main() {
gl_Position = ProjectionMatrix * InVertex;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)