[c++] OpenGL을 이용한 키보드 및 마우스 입력 처리

목차

  1. OpenGL 및 입력 처리 소개
  2. GLFW 라이브러리를 사용하여 창 생성
  3. 키보드 입력 처리
  4. 마우스 입력 처리
  5. 예제 코드
  6. 마무리

1. OpenGL 및 입력 처리 소개

OpenGL은 3차원 그래픽을 렌더링하기 위한 API이며, 사용자 입력을 받아들이기 위해서는 외부 라이브러리의 도움이 필요합니다. GLFW 라이브러리를 사용하여 창 생성 및 입력 처리를 할 수 있습니다.

2. GLFW 라이브러리를 사용하여 창 생성

GLFW는 OpenGL용으로 개발된 강력한 라이브러리로, 창을 생성하고 기본 입력 이벤트를 처리할 수 있도록 도와줍니다. 프로젝트에서 GLFW를 설정하고 초기화하여 창을 생성합니다.

3. 키보드 입력 처리

GLFW를 사용하여 키보드 입력을 감지하고 해당 입력에 대한 동작을 정의할 수 있습니다. 키보드 이벤트 콜백 함수를 등록하여 사용자의 입력을 처리합니다.

4. 마우스 입력 처리

마우스 입력도 키보드 입력과 비슷한 방법으로 처리할 수 있습니다. GLFW를 사용하여 마우스 버튼 및 마우스 이동 이벤트를 감지하고 해당 이벤트에 대한 처리를 구현합니다.

5. 예제 코드

다음은 OpenGL 및 GLFW를 사용하여 기본적인 키보드 및 마우스 입력을 처리하는 C++ 예제 코드입니다:

#include <GLFW/glfw3.h>
#include <iostream>

void keyCallback(GLFWwindow* window, int key, int scancode, int action, int mods) {
    if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) {
        glfwSetWindowShouldClose(window, GLFW_TRUE);
    }
}

void mouseCallback(GLFWwindow* window, int button, int action, int mods) {
    if (button == GLFW_MOUSE_BUTTON_LEFT && action == GLFW_PRESS) {
        double xpos, ypos;
        glfwGetCursorPos(window, &xpos, &ypos);
        std::cout << "Mouse clicked at: (" << xpos << ", " << ypos << ")" << std::endl;
    }
}

int main() {
    GLFWwindow* window;

    if (!glfwInit()) {
        return -1;
    }

    window = glfwCreateWindow(800, 600, "OpenGL Input Handling", NULL, NULL);
    if (!window) {
        glfwTerminate();
        return -1;
    }

    glfwMakeContextCurrent(window);

    glfwSetKeyCallback(window, keyCallback);
    glfwSetMouseButtonCallback(window, mouseCallback);

    while (!glfwWindowShouldClose(window)) {
        // 렌더링 및 입력 처리
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

6. 마무리

이 포스트에서는 OpenGL을 이용한 키보드 및 마우스 입력 처리에 대해 간단히 살펴보았습니다. 실제로 OpenGL을 사용하는 프로젝트에서는 더 복잡한 입력 처리를 구현해야 할 수 있으며, GLFW와 OpenGL 공식 문서를 참고하여 보다 다양한 입력 처리 기술을 활용할 수 있습니다.