INNENTÜREN, TUNING DESIGN TÜREN aus Slowenien.


  • Ljubljana


    0038651 - 660 - 406

  • Ptuj


    0038651 - 316 - 130
    0038631 - 688 - 777

glutmotionfunc 예제

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는 현재 창에 대해 각각 모션 및 패시브 모션 콜백을 설정합니다. 하나 이상의 마우스 단추를 누를 때 창 내에서 마우스가 이동할 때 창에 대한 모션 콜백이 호출됩니다.

마우스 단추를 누르지 않고 창 내에서 마우스가 이동할 때 창에 대한 수동 모션 콜백이 호출됩니다.