Я не слишком знаком с GLSL 3.3, но держу пари, что PerspectiveViewMatrix (это даже встроенная функциональность?) Создает матрицу, которая заменяет старую встроенную gl_ProjectionMatrix
gl_ModelViewMatrix в целом является продуктом матрицы преобразования объекта в мировом пространстве и его собственного «локального» преобразования, поэтому его можно определить как продукт TranslationMatrix, RotationMatrix и TransformationMatrix.
Вам нужно отправить все матрицы в шейдер самостоятельно, например как униформа. Эти матрицы вам нужно построить самостоятельно (например, используя GLM ). Ленивый пример для матрицы проекции:
// 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;
}