05. 오픈지엘 기본 틀

하이솝·2026년 3월 28일

컴퓨터그래픽스

목록 보기
5/9

02. 입력 모드

  • 메저(Measure)
    응용프로그램에게 전달되는 입력값

  • 트리거(Trigger)
    전달하라는 신호

예)
DIR(메저) <Enter>(트리거)

메저 프로세스와 트리거와의 관계를 기준으로
입력 모드를 세 가지로 구분할 수 있음

2.1 리퀘스트 모드

프로그램이 실행 중에 메저를 요구하는 방식


  • 트리거가 일어날 때 까지 대기상태
  • 트리거가 입력될 때 까지 어떤 값이 입력되었는지 알 수 없음

예) scanf는 키보드 값(값 + Enter)가 입력될 때 까지 대기



사무용 프로그램에서는 괜찮은 방식이나,
실시간으로 계속 진행이 되어야 할 멀티미디어 프로그램
(게임을 진행하면서 방향키 한번에 Enter를 누를 수는 없음)
에서는 부적절하다.

2.2 샘플 모드

직접 모드


  • 사용자 트리거가 불필요
  • 이미 필요한 메저가 준비된 상태

예) 프로그램은 현재 Ctrl키가 눌려있는지 확인하고 싶을 때,
프로그램 함수 GetAsyncKeyState(VK_CONTROL)호출.
Ctrl키가 눌려있다면 양수, 아니면 0을 프로그램으로 즉시 전달

단점이 있다면, 각 키가 눌리는 상황이 궁금하다면
매번 여러 함수 호출을 통해서 확인해야 함



각 키가 눌린 상태인지, 아닌지를 확인할 수 있음.
실시간 게임이나 멀티미디어 응용프로그램을 만들 때 적합함

2.3 이벤트 모드

OpenGL에서 사용하는 방식


  • 사용자가 입력 선택 주도권 있음
    리퀘스트/샘플 모드의 경우 프로그램이 주도권을 가짐

응용프로그램은 주기적으로 이벤트 큐를 검사

  • 드라이버에게 이벤트 리퀘스트 전달
  • 드라이버가 이벤트 큐의 프런트 레코드를 전달
  • 큐가 비어 있다면 응용프로그램은 다른 일을 수행

콜백 함수(Callback function) or 이벤트 처리기(Event Handler)
응용프로그램이 이벤트를 처리하는 방법

실습에 진행한 코드 주석과 같이 볼 것

GL의 화면좌표, GLUT 화면좌표


  • GLUT의 경우 문서의 줄 번호처럼 아래 방향으로 y좌표가 증가
  • OpenGL(GL)의 경우 수학 좌표계에 대응하여 위쪽 방향으로 y좌표가 증가

06. 애니메이션과 더블 버퍼링

프레임 버퍼

2중 포트 구조

  • Read port, Write Port
  • 버퍼를 읽어서 화면에 그리는 것은 매우 빠름
  • 버퍼에 기록하는 것은 상대적으로 느림

기록하는 속도와 화면에 출력하는 속도의 차이로 인한 문제가 발생

더블 버퍼링

  • 프런트 버퍼와 백 버퍼로 구성됨
  • 비디오 컨트롤러는 기록이 끝난 프론트 버퍼에 연결하여 데이터를 화면에 출력하고,그래픽 프로세서는 백 버퍼에 기록을 시작함
  • 백 버퍼의 작업이 끝나면 비디오 컨트롤러는 포인터를 백 버퍼쪽으로 옮김
  • 백 버퍼는 프런트 버퍼가 되며, 그리고 기존의 프런트 버퍼는 백 버퍼가 됨
    그래픽 프로세서는 백 버퍼를 가리키며,
    비디오 컨트롤러는 프런트 버퍼를 가리킴

0개의 댓글