OpenGL三角形旋转错误

问题描述 投票:0回答:1

我想围绕自己的轴旋转三角形,但是它围绕相机旋转。我必须从教程中编码,唯一的不同是,我使用C而不是C ++。因此,我必须使用“ cglm” -lib而不是“ glm” -lib。(我也用过剩,很高兴)

全局定义:

mat4  model;
mat4 projection;
mat4 view;
mat4 modelViewProj;

主要:

    glm_mat4_identity(model); //Einheitsmatrix
    glm_mat4_identity(view);
    glm_scale(model, (vec3) {1.2f, 1.2f, 1.2f});


    glm_perspective(glm_rad(45.0f), 4.0f/3.0f, 0.1f, 100.0f, projection);

    glm_translate(view, (vec3) {0, 0, -5.0f});

    glm_mat4_mul(model, projection, modelViewProj);
    glm_mat4_mul(modelViewProj, view, modelViewProj);

    modelMatrixLocation = glGetUniformLocation(shader1.shaderId, "u_modelViewProj");

在循环中:

//In the void display()
glUniformMatrix4fv(modelMatrixLocation,1, GL_FALSE, &modelViewProj[0][0]); 

//In the void update() ->glutTimerFunc()
    glm_rotate(model, 0.08f, (vec3){0, 1, 0});

    glm_mat4_mul(model, projection, modelViewProj);
    glm_mat4_mul(modelViewProj, view, modelViewProj);
c opengl rotation glut glm-math
1个回答
0
投票

矩阵乘法的顺序是错误的。

必须是:

modelViewProj = projection * view * model;

在C:

glm_mat4_mul(view, model, modelViewProj);
glm_mat4_mul(projection, modelViewProj, modelViewProj);

注意,void glm_mat4_mul(mat4 m1, mat4 m2, mat4 dest)计算:

void glm_mat4_mul(mat4 m1, mat4 m2, mat4 dest)
© www.soinside.com 2019 - 2024. All rights reserved.