[c++] OpenGL을 이용한 키보드 및 마우스 입력 처리
목차
- OpenGL 및 입력 처리 소개
- GLFW 라이브러리를 사용하여 창 생성
- 키보드 입력 처리
- 마우스 입력 처리
- 예제 코드
- 마무리
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 공식 문서를 참고하여 보다 다양한 입력 처리 기술을 활용할 수 있습니다.