GLM :: perspective()和glm :: lookat()一起工作



我试图确切地弄清楚lookat和perspective函数的工作方式。

我想更改glm :: lookat的值(尤其是相机位置的z值(,并且我注意到,如果该值与glm :: perspective中近平面的值不同,它会破坏我的对象(看起来不正常(。然后,我不知道我的问题是否与弓球有关(但我不这么认为,因为在移动对象之前也出现了问题(,或者出于某种原因,我应该在相机位置使用相同的值(z值(在lookat函数和近平面中的透视函数中。

有什么建议?

我从https://en.wikibooks.org/wiki/opengl_programming/modern_opengl_tutorial_arcball

main.cpp:

// ... Something ...
// lookAt function
glm::mat4 view = glm::lookAt(glm::vec3(0.0f, 0.0f, 3.0f), glm::vec3(0., 
0., 0.), glm::vec3(0., 1., 0.));
// ... Something ...
while(!glfwWindowShouldClose(window)) {
    // ... Something ...
    // perspective
    glm::mat4 projection = glm::perspective(glm::radians(45.0f), 
    (float)WIDTH / (float)HEIGHT, 0.1f, 10.f);
    // arcball
    glm::mat4 rotated_view = view * arcball.rotation_matrix_view();
    glm::mat4 rotated_model = model * 
    arcball.rotation_matrix_model(rotated_view);
    ourShader.setMat4("projection", projection);
    ourShader.setMat4("view", rotated_view);
    ourShader.setMat4("model", rotated_model);
    // ... Something ...
}
// ... Something ...

问题的更新。解决!

我刚刚发现这是Z战斗的问题。

对于其他有同样问题的用户,我建议该页面:https://www.opengl.org/archives/resources/faq/faq/technical/depthbuffer.htm

相关内容

  • 没有找到相关文章