Как glm :: перспектива () и glm :: lookAt () работают вместе?

Я пытаюсь выяснить, как именно работают lookAt и перспективные функции.

Я хотел бы изменить значение glm :: lookAt (в частности, значение z положения камеры), и я заметил, что если это значение отличается от значения ближней плоскости в glm ::спектива, это нарушает мой объект (это выглядит ненормально). Тогда я не знаю, связана ли моя проблема с дугообразным мячом (но я так не думаю, поскольку проблема возникает также до перемещения объекта) или с тем, что по какой-то причине я должен использовать то же значение для положения камеры (значение 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 ...

0

Решение

Обновление вопроса. РЕШИТЬ!

Я только что обнаружил, что это была проблема z-борьбы.

Для других пользователей, имеющих такую ​​же проблему, я предлагаю эту страницу: https://www.opengl.org/archives/resources/faq/technical/depthbuffer.htm

0

Другие решения

Других решений пока нет …