Почему я получаю другое вращение куба, чем в учебнике Learnopengl.com? ⇐ C++
Почему я получаю другое вращение куба, чем в учебнике Learnopengl.com?
Это здесь: https://learnopengl.com/Getting-started ... te-Systems. Исходный код до этого момента в руководстве находится по этой ссылке: https://learnopengl.com/code_viewer_gh. ... length.cpp
Я думаю, что самое важное — это эти строки внутри цикла рендеринга:
glm::mat4 model = glm::mat4(1.0f); // обязательно сначала инициализируйте матрицу единичной матрицей glm::mat4 view = glm::mat4(1.0f); glm::mat4 проекция = glm::mat4(1.0f); модель = glm::rotate(model, (float)glfwGetTime(), glm::vec3(0.5f, 1.0f, 0.0f)); view = glm::translate(view, glm::vec3(0.0f, 0.0f, -3.0f)); проекция = glm::perspective(glm::radians(45.0f), (float)SCR_WIDTH / (float)SCR_HEIGHT, 0.1f, 100.0f); Мой собственный цикл рендеринга выглядит так:
while (!glfwWindowShouldClose(окно)) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); модель = glm::rotate(glm::mat4(1.0f), (float)glfwGetTime(), glm::vec3(0.5f, 1.0f, 0.0f)); view = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -6.0f)); proj = glm::perspective(glm::radians(45.0f), (float)WIDTH / (float)HEIGHT, 0.1f, 100.0f); Shader.uniform("проекция", проект); Shader.uniform("модель", модель); shader.uniform("просмотр", просмотр); glDrawArrays (GL_TRIANGLES, 0, 36); glfwSwapBuffers (окно); glfwPollEvents(); } Насколько я могу судить, я делаю то же самое, но получаю вращение, которое перемещает весь куб, а не просто вращается вокруг себя. Я также проверил вершинный шейдер, и в обоих случаях порядок один и тот же: gl_Position = проекция * вид * модель * vec4(aPos, 1.0f); и в моем собственном вершинном шейдере: gl_Position = проекция * вид * модель * vec4(pos, 1);
Есть ли что-нибудь еще, что мне следует включить? Спасибо большое!
Это здесь: https://learnopengl.com/Getting-started ... te-Systems. Исходный код до этого момента в руководстве находится по этой ссылке: https://learnopengl.com/code_viewer_gh. ... length.cpp
Я думаю, что самое важное — это эти строки внутри цикла рендеринга:
glm::mat4 model = glm::mat4(1.0f); // обязательно сначала инициализируйте матрицу единичной матрицей glm::mat4 view = glm::mat4(1.0f); glm::mat4 проекция = glm::mat4(1.0f); модель = glm::rotate(model, (float)glfwGetTime(), glm::vec3(0.5f, 1.0f, 0.0f)); view = glm::translate(view, glm::vec3(0.0f, 0.0f, -3.0f)); проекция = glm::perspective(glm::radians(45.0f), (float)SCR_WIDTH / (float)SCR_HEIGHT, 0.1f, 100.0f); Мой собственный цикл рендеринга выглядит так:
while (!glfwWindowShouldClose(окно)) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); модель = glm::rotate(glm::mat4(1.0f), (float)glfwGetTime(), glm::vec3(0.5f, 1.0f, 0.0f)); view = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -6.0f)); proj = glm::perspective(glm::radians(45.0f), (float)WIDTH / (float)HEIGHT, 0.1f, 100.0f); Shader.uniform("проекция", проект); Shader.uniform("модель", модель); shader.uniform("просмотр", просмотр); glDrawArrays (GL_TRIANGLES, 0, 36); glfwSwapBuffers (окно); glfwPollEvents(); } Насколько я могу судить, я делаю то же самое, но получаю вращение, которое перемещает весь куб, а не просто вращается вокруг себя. Я также проверил вершинный шейдер, и в обоих случаях порядок один и тот же: gl_Position = проекция * вид * модель * vec4(aPos, 1.0f); и в моем собственном вершинном шейдере: gl_Position = проекция * вид * модель * vec4(pos, 1);
Есть ли что-нибудь еще, что мне следует включить? Спасибо большое!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение