Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 3 of 3

Thread: Move a basic shape

  1. #1
    Newbie Newbie
    Join Date
    Jan 2016
    Posts
    2

    Question Move a basic shape

    Hi, I'm very new to GLFW and openGL and I just wanted to know how to move a basic shape using the up,down,left,right arrow keys.
    Every time I execute the code it just makes the box bigger with each press and I'm left as to wonder why.
    Thanks for your time and help in advance .

    My Code:
    Code :
    //Prebuilt libraries & headers
    #include <glew.h>
    #include <glfw3.h>
    #include <iostream>
     
    //Custom headers
    #include "createWindow.h"
     
    using namespace std;
     
    //Variables
    float X1 = -0.05;
    float Y1 = 0.1;
    float X2 = 0.05;
    float Y2 = 0.0;
     
    //Protoypes
    static void error_callback(int error, const char* description)
    {
    	fputs(description, stderr);
    }
    static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
    {
    	//Close program
    	if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
    		glfwSetWindowShouldClose(window, GL_TRUE);
    	//Move left
    	else if (key == GLFW_KEY_LEFT && action == GLFW_PRESS)
    		X1 += -0.05;
    	//Move up
    	else if (key == GLFW_KEY_UP && action == GLFW_PRESS)
    		Y1 += 0.1;
    	//Move right
    	else if (key == GLFW_KEY_RIGHT && action == GLFW_PRESS)
    		X2 += 0.05;
    	//Move down
    	else if (key == GLFW_KEY_DOWN && action == GLFW_PRESS)
    		Y2 -= 0.1;
    }
     
    //Primary function
    void createWindow::windowCreate() {
    	//Create a 854x480 window
    	GLFWwindow* window;
    	//Error
    	glfwSetErrorCallback(error_callback);
    	if (!glfwInit())
    		exit(EXIT_FAILURE);
    	//Create Window
    	window = glfwCreateWindow(854, 480, "Pong", NULL, NULL);
    	//Crash if window has not been created
    	if (!window)
    	{
    		glfwTerminate();
    		exit(EXIT_FAILURE);
    	}
    	//Declarations
    	glfwMakeContextCurrent(window);
    	glfwSwapInterval(1);
    	glfwSetKeyCallback(window, key_callback);
    	//Run while window is not closed
    	while (!glfwWindowShouldClose(window))
    	{
    		int width, height;
    		glfwGetFramebufferSize(window, &width, &height);
    		glViewport(0, 0, width, height);
    		glClear(GL_COLOR_BUFFER_BIT);
    		glMatrixMode(GL_PROJECTION);
    		glLoadIdentity();
    		glMatrixMode(GL_MODELVIEW);
    		glLoadIdentity();
    		glRectf(X1, Y1, X2, Y2);
    		glfwSwapBuffers(window);
    		glfwPollEvents();
    	}
    	//If window is closed
    	glfwDestroyWindow(window);
    	glfwTerminate();
    	exit(EXIT_SUCCESS);
    };

  2. #2
    Newbie Newbie
    Join Date
    Jan 2016
    Posts
    2

    Solved!

    How do I mark this thread as solved?

  3. #3
    Administrator Regular Contributor Khronos_webmaster's Avatar
    Join Date
    Apr 2007
    Location
    Montreal
    Posts
    184
    We don't have an "Answered" or "Resolved" switch. Posting your solution though, might help others. Then we'd see it was resolved.
    Webmaster Khronos.org and OpenGL.org

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •