오다기리 박의 알고리즘 노트

[OpenGL로 배우는 컴퓨터 그래픽스] Chapter 05. 오픈지엘 기본 틀 본문

컴퓨터 그래픽스/OpenGL

[OpenGL로 배우는 컴퓨터 그래픽스] Chapter 05. 오픈지엘 기본 틀

오다기리 박 2019. 2. 14. 21:09

OpenGL로 배우는 3차원 컴퓨터 그래픽스


Chapter 05. 오픈지엘 기본 틀

Section 01. 그래픽스 입력장치

  • 물리적 입력장치

    • 포인팅 장치 : 마우스, 조이스틱, 트랙볼, 스페이스볼…

  • 논리적 입력장치

    • 좌표 입력기, 연속좌표 입력기, 문자열 입력기, 스칼라 입력기, 메뉴선택 입력기, 물체선택 입력기…

  • 물체 선택


Section 02. 입력 모드

Measure : 입력장치가 응용 프로그램에 넘겨주는 값

Trigger : measure를 가져가라는 신호

  • 리퀘스트 모드

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

    • Request_Locator(Device_ID, &Measure);

  • 샘플 모드 (직접 모드)

    • 프로그램이 메져를 요구하면 메져 프로세서는 무조건 현재 메져를 제공

    • Sample_Locator(Device_ID, &Measure);

  • 이벤트 모드

    • 리퀘스트나 샘플모드에서는 프로그램이 Device_ID로 지정한 물리적 장치 이외의 어떤 입력장치로부터의 입력도 무시된다.

    • 사용자가 선택한 입력장치가 우선권을 쥔다.

    • 아무 때나 사용자가 임의로 선택한 입력장치를 사용하여 입력 데이터를 프로그램에게 전달할 수 있고, 프로그램은 이러한 요구에 맞춰서 해당 작업을 수행해야 한다.

    • 콜백함수(이벤트 처리기) : 응용 프로그램이 이벤트를 처리하는 방법. 이벤트 타입별로 프로그램이 수행해야 할 내용을 함수로 나타낸 것


Section 03. 지엘 프로그램 예

  • 입력 콜백과 GLUT

    • GLUT는 드라이버로부터 받은 이벤트 레코드를 참고로 이벤트 타입을 판단하고 테이블(콜백함수 등록)을 검색하여 그에 맞는 콜백함수를 호출

    • 이때 이벤트 레코드의 메져는 파라미터 형태로 콜백함수에게 전달


Section 04. 윈도우와 뷰포트

  • 정규좌표와 화면좌표

  • 윈도우, 뷰포트 GLUT 모델링

    • 뷰포트 : 윈도우 내부에 설정한 작은 창

    • 뷰포트 왜곡

      왜곡 해결책 : 윈도우 종횡비를 원래 장면의 종횡비와 일치하도록 규제, 윈도우 내부에 별도의 원래 장면의 종횡비와 일치하는 뷰포트를 열기

  • GLUT의 윈도우와 뷰포트(glViewport)

    • GLUT 함수는 화면 좌상단을 원점으로 하는 일반적인 윈도우 운영체제의 화면 좌표계를 따름.

    • 일단 만들어진 윈도우 내에서 그림을 그리기 위한 GL 함수는 윈도우 좌하단을 원점으로 하는 자체의 화면 좌표계를 사용한다.


Section 05. 콜백 프로그래밍

  • Reshape 콜백

    • glOrtho : 장면을 포착하는 틀

    • glViewport : 틀에 잡힌 장면을 컴퓨터 화면에 뿌리는 틀

    • 두개의 틀의 종횡비가 일치한다면 물체에 왜곡은 일어나지 않는다

  • Mouse 콜백

    • 일반적으로 모델링 이후 투상면이 정의되고 뷰포트는 투상면이 정의된 이후 결정된다.

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

  • 비디오 컨트롤러 (RAMDAC)

    • 비디오 컨트롤러는 프레임 버퍼에 기록된 디지털 색 값을 읽고 전압 보기표를 참조로 해당 아날로그 전압을 찾아낸 후, 전자총에 해당 전압을 가한다.

    • 비디오 컨트롤러의 화면 재생속도 > 그래픽 프로세서가 프레임 버퍼에 쓰는 작업 속도 로 인해 화면 깜빡거림 현상 발생

  • 더블 버퍼링

    • 비디오 컨트롤러가 프론트 버퍼의 내용을 읽고 출력하는 동안 그래픽 프로세서는 백 버퍼에 새로운 내용을 써나간다.

    • 비디오 컨트롤러가 쓰기를 완전히 마치면 그제야 비디오 컨트롤러는 백버퍼로 스위칭하여 새로이 기록된 내용을 읽어간다. 동시에 그래픽 프로세서는 이전의 프론트 버퍼로 스위칭하여 다시 새로운 내용을 써나간다.


Section 08. 디스플레이 리스트

  • GL 함수의 실행 모드

    • 직접 모드 : 물체를 화면에 그림과 동시에 물체 생성과 관련된 정보를 파기

    • 보류 모드 : 정의된 물체 정보를 그대로 유지하고 재사용. 즉 물체를 다시 그려낼 때 코드를 실행하지 않고 이미 정의된 물체를 컴파일된 형태로 재사용함을써 빠른 속도 보장 -> 디스플레이 리스트에 의해 이루어짐

  • 디스플레이 리스트

    • 반복적으로 실해오디어야 할 일련의 GL 명령어를 디스플레이 리스트 내부에 포함시킴으로써 프로그램 실행시간은 빨라진다.