GLM:旋转矩阵初始化

时间:2017-09-28 19:04:32

标签: c++ glm-math rotational-matrices

我的代码的基本目标是围绕z轴旋转几个点。但是,在尝试使用 glm :: rotate(m4,a,v3)初始化旋转矩阵并尝试检查其组件后,快速 printf 输出大约1 800 000 000.0000000 ...每个元素。我相信这不是正确的功能.~

注意:询问空间转换背后的数学。他们很清楚。

代码本质上:

int main(int argc, char **argv){
    InitGL(); // openGL, GLFW..
    CreateShaders();            // vertShader: "mat4 trans"-uniform
    GenerateTextures();

    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

    uniTrans = glGetUniformLocation(shaderProgram, "trans");
    glm::mat4 trans;

    while(!glfwWindowShouldClose(window)){
        glClear(GL_COLOR_BUFFER_BIT);

        trans = glm::rotate(trans, glm::radians(180.0f), glm::vec3(0.0f, 0.0f, 1.0f));
        glUniformMatrix4fv(uniTrans, 1, GL_FALSE, glm::value_ptr(trans));

        glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);

        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    CleanUp();
    glfwDestroyWindow(window);
    glfwTerminate();
    return 0;
}

当旋转矩阵未被使用时,程序按预期工作。使用 printf("%f",m [0] [0])检查矩阵值,依此类推。知道从哪里开始这个吗?没有任何错误甚至是警告。

1 个答案:

答案 0 :(得分:0)

自答案:

矩阵必须初始化:

glm::mat4 trans(1.0f);

结果为单位矩阵。