Hey guys,
I am trying to use the up and down keys to zoom in and out on an object I’ve drawn.
From what I understand I can use glTranslatef(0.0f, 0.0f, zoomValue) to zoom in/out on the object. But when I use this in my code it just moves the object left and right instead of zooming in and out. Can anyone point out what the problem is? Here is the code for my display function:
void Bunny::displayBunny()
{
GLuint vertexbuffer;
glGenBuffers(1, &vertexbuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW);
do{
float translateValue = 0.0f;
float yRotate = 0.0f;
if (glfwGetKey(window, GLFW_KEY_RIGHT) == GLFW_PRESS)
yRotate = 1.0f;
if (glfwGetKey(window, GLFW_KEY_LEFT) == GLFW_PRESS)
yRotate = -1.0f;
if (glfwGetKey(window, GLFW_KEY_UP))
translateValue += .001;
if (glfwGetKey(window, GLFW_KEY_DOWN))
translateValue -= .001;
// Clear the screen
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// 1rst attribute buffer : vertices
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glVertexAttribPointer(
0, // attribute
3, // size
GL_FLOAT, // type
GL_FALSE, // normalized?
0, // stride
(void*)0 // array buffer offset
);
// Draw the triangle !
glDrawArrays(GL_TRIANGLES, 0, vertices.size());
glDisableVertexAttribArray(0);
glTranslatef(0.0f, 0.0f, translateValue);
glRotatef(0.1f, 0.0f, yRotate, 0.0f);
// Swap buffers
glfwSwapBuffers(window);
glfwPollEvents();
} // Check if the ESC key was pressed or the window was closed
while (glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS &&
glfwWindowShouldClose(window) == 0);
}
Thanks!