繁体   English   中英

GLM:旋转矩阵初始化

[英]GLM: rotation matrix initialisation

我的代码的基本目的只是围绕 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])等检查矩阵值。 知道从哪里开始吗? 不会抛出任何错误甚至警告。

自我回答:

必须初始化矩阵:

glm::mat4 trans(1.0f);

结果到单位矩阵。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM