-
Ljubljana
0038651 - 660 - 406
-
Ptuj
0038651 - 316 - 130
0038631 - 688 - 777
glutmotionfunc 예제
이해하는 것이 매우 도움이되지만, 나는 질문이, 나는 페인트처럼 선을 그릴 하려는 경우 예를 들어, 디스플레이 전후이 함수를 호출합니까?. GLUT는 우리의 창에 대한 이벤트 기반 프로그래밍 모델을 구현하기 🙂 감사합니다. 예를 들어 사용자가 마우스를 클릭하거나 이동할 때 GLUT는 이벤트 처리기 함수를 호출하고 프로그램에서 사용자의 작업을 따라갈 수 있도록 허용할 수 있습니다. u는 적어도 biginners에 대한 몇 가지 예를 제공해야한다 대신, 우리는 시작하기 위해 우리의 카메라 세트를 고정해야합니다, 하지만 이동을 시작하면, 모션은 속도에 의해 제어됩니다. 실제 속도는 X 축과 Z 축을 따라 이동 속도의 조합이 될 것입니다. 예를 들어 사용자가 W 키를 아래로 누르면 카메라가 앞으로 이동하기 시작하는 신호입니다. 이 작업은 다음과 같은 한 줄의 코드로 수행할 수 있습니다. 최대 FOV를 60.0f 도로 유지하십시오. 해봐! 창 크기를 1024 x 1024로 늘리십시오(화면 해상도가 허용되는 경우): 이전 마우스 위치에서 현재 마우스 위치를 빼면 마우스 이동에 얼마나 많은 차이가 있는지 결정합니다(수행함!): 랩 7, 확산 및 반사 광에서 기억하십시오. , 우리는로드하고 다양한 모델을 표시하는 웨이브 프론트 OBJ 로더를 사용했다. 위에 나열된 switch 문 내의 주석에 따라 나머지 키에 대한 코드를 추가합니다. 해봐! object_model 변수를 선언하는 코드 줄 바로 위에: 마우스의 일반적인 용도는 뷰어가 머리를 왼쪽/오른쪽으로 돌리고 위아래로 볼 수 있도록 하는 것입니다. FPS 게임에서 동작은 확대/축소 모드(마우스 버튼을 눌렀을 때)와 창 내에서 “수동” 마우스 이동 중 모두 동일합니다.
GLUT는 마우스 드래그를 일반 모션과 구분하기 위해 두 개의 서로 다른 이벤트를 생성하므로 마우스 끌기 및 마우스 이동 이벤트모두에 연결하려면 처리기 함수를 두 번 지정해야 합니다. 처리기 함수는 look(): OpenGL에서 확대/축소의 시각적 효과는 프로젝션 매트릭스 변환에 의해 설정됩니다. 원래 프로젝션은 FPSCamera 클래스 생성자에서 설정됩니다: 다음으로 WASD 키 중 하나가 해제되면 카메라 모션이 중지됩니다. 이 이벤트를 키보드_up() 함수에서 캡처합니다. X 및 Z 속도를 0으로 설정합니다. 해봐! 다중 샘플링은 다각형 가장자리에서 픽셀 색상을 평균화하여 전체 화면 안티앨리어링을 달성하는 데 도움이 됩니다. 프로그램을 컴파일하고 실행합니다. 모든 것이 예상대로 작동하는지 확인하십시오. 해당 MODEL_OBJ_FILENAME 정의에 주석을 달지 않고 다른 모델을 사용해 보십시오. 개체가 화면에 너무 작거나 너무 큰 것처럼 보이는 경우 scale_amount 변수를 변경해야 합니다. glutMotionFunc 및 glutPassiveMotionFunc는 현재 창에 대해 각각 모션 및 패시브 모션 콜백을 설정합니다. 하나 이상의 마우스 단추를 누를 때 창 내에서 마우스가 이동할 때 창에 대한 모션 콜백이 호출됩니다.
마우스 단추를 누르지 않고 창 내에서 마우스가 이동할 때 창에 대한 수동 모션 콜백이 호출됩니다.