Я работаю с C ++ и opengl, используя библиотеку glfw. Я написал программу, которая перемещает модель с помощью клавиши со стрелкой в плоскости xy, используя GLFW_GETKEY, это выглядит немного так:
void processInput(GLFWwindow* window);
float x = -3.0f;
float y = 0.0f;
int main()
{
//some rendering code....
.
.
.
Shader gun("gun.vs", "gun.fs");
gun.use();
gun.setMat4("projection", projection);
gun.setMat4("view", view);
//transformation
transform = glm::translate(scale, glm::vec3(x, y, 1.0f));
gun.setMat4("model", transform);
}
void processInput(GLFWwindow* window)
{
if (glfwGetKey(window, GLFW_KEY_UP) == GLFW_PRESS)
y += 0.1;
if (glfwGetKey(window, GLFW_KEY_DOWN) == GLFW_PRESS)
y += -0.1;
if (glfwGetKey(window, GLFW_KEY_LEFT) == GLFW_PRESS)
x += -0.1;
if (glfwGetKey(window, GLFW_KEY_RIGHT) == GLFW_PRESS)
x += 0.1;
std::cout << x << std::endl;
std::cout << y << std::endl;
}
значения x любые обновления y в консоли, когда cout используется внутри функции processInput, но не в main l oop.
У кого-нибудь есть объяснения по этому поводу.