저는 파이 게임을 통해 OpenGL을 사용하여 상황을 렌더링하고 OpenGL 마우스 정보를 얻고 싶습니다. 나는 마우스 위치 & 클릭 상태를 Pygame을 통해 직접 얻을 수 있다는 것을 알고 있지만 OpenGL의 좌표에서 뷰포트의 픽셀 좌표가 아니라 마우스 위치가 필요합니다. 문제는 OpenGL의 마우스 콜백을 실행할 수 없다는 것입니다. 다음 코드를 고려하십시오 :이 코드를 실행하면파이 게임에서 OpenGL 마우스 콜백을 사용하는 데 문제가 있습니다
import pygame
from pygame.locals import DOUBLEBUF, OPENGL
from OpenGL.GLUT import glutMouseFunc, glutInit
def mouse_handler(button, state, x, y):
print("mouse handler: ",button, state, x, y)
pygame.init()
display = (800,600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
glutInit()
glutMouseFunc(mouse_handler)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
pygame_mouse_pos = pygame.mouse.get_pos()
print(pygame_mouse_pos)
그것이 라인 pygame_mouse_pos = pygame.mouse.get_pos()
에서 얻어진 파이 게임에 따라 마우스 위치 의 연속 출력을 시작합니다. 하지만 OpenGL 마우스 콜백을받을 수 없습니다.이 콜백은 glutMouseFunc(mouse_handler)
으로 시작하여 발생합니다. 누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까? 이 코드는 Python 2와 Python 3에서 모두 실행되며 각각에서 동일한 결과를 얻습니다.
OpenGL과 GLUT의 차이점은 무엇입니까? GLUT가 OpenGL의 구성 요소라고 가정했습니다. –
@ J-bob, GLUT는 입력 처리, 창 생성 및 OpenGL 컨텍스트를 만드는 "OpenGL 유틸리티 툴킷"입니다. 운영 체제와 대화하는 것이 중요합니다. 또한 좀 더 높은 수준의 그리기 방법을 제공합니다. OpenGL은 GPU와 대화하기위한 API이거나 오히려 드라이버이기 때문에 실제 삼각형을 움직이고 쉐이더를 만드는 것입니다. – karyon