Reporting Date: October. 21, 2024
GLUT에 대한 전반적인 개념에 대해 다루고자 한다.
목차
01 GLUT
(OpenGL Utility Toolkit)
다양한 디바이스와 운영체제 환경에서
그래픽 프로그램을 쉽게 개발할 수 있도록 도와주는 라이브러리.
시스템 소프트웨어의 의존성을 줄여주므로,
플랫폼에 구애받지 않고 OpenGL을 사용할 수 있게 해준다.
1 . 플랫폼 독립성
윈도우, iOS, 리눅스 등 다양한 디바이스와
운영체제에서 동작할 수 있도록 도와준다.
본래 운영체제마다 시스템 소프트웨어가 다르므로,
직접 코드를 작성해 각 환경에 맞춰야 하는 번거로움이 해결된다.
2 . 표준화
시스템마다 키보드, 마우스와 같은 입력 장치의 처리 방식이 다르지만,
이를 표준화하여 다양한 디바이스에서 일관되게 작동할 수 있도록 지원한다.
즉, 개발자가 디바이스에 맞춰 따로 코드를 작성할 필요 없이,
자동으로 각 디바이스와 매칭되어 작동하게 된다.
3 . 그래픽 인터페이스 제어
키보드, 마우스와 같은 입력 장치의 인터페이스를 제어할 수 있으며,
이러한 입력을 바탕으로 그래픽 화면에서 상호작용할 수 있게 된다.
결과적으로, 시스템 소프트웨어의 의존성을 줄이고
개발자가 하드웨어나 운영체제에 구애받지 않도록 도와준다.
02 GLUT 기능
1 . 윈도우 기능 제공
그래픽 프로그램에서 사용되는 창(Window)을
쉽게 생성하고 관리할 수 있는 기능을 제공한다.
창을 초기화하고, 크기를 조절하며,
위치를 설정하는 등의 작업을 간단히 처리할 수 있다.
2 . 콜백 기능
사용자가 정의한 이벤트를 처리하는 함수.
키보드, 마우스 등의 입력 이벤트가 발생할 때
특정 동작을 수행하도록 콜백 함수를 연결할 수 있다.
예를 들어, 특정 키를 누르면 해당 이벤트를 처리하는 함수를
미리 등록해 두고, 그 키가 눌렸을 때 호출되도록 할 수 있다.
3 . RTF 표준화 포맷
(Rich Text Format)
여러 소프트웨어에서 공통적으로 사용되며,
그래픽 데이터를 표준화된 형태로 내보낼 수 있게 해준다.
렌더링된 그래픽 데이터를 RTF로 내보낼 경우,
MS 워드 같은 소프트웨어에서 객체 단위로 불러와 편집할 수 있다.
이를 통해 다른 프로그램과 데이터 호환성을 유지할 수 있다.
4 . 더블 버퍼링
(Double Buffering)
GPU와 CPU 간의 작업을 최적화하는 방식.
한 버퍼가 렌더링을 진행하는 동안 다른 버퍼에서 읽기를 진행해
병렬 처리가 가능하고, 속도 향상과 자원 절약 효과를 가져온다.
스위칭(Switching)은 이 두 버퍼 간의 역할을 교체하는 과정이며,
이를 통해 부드러운 그래픽 표현이 가능하다.
5 . 스와핑
(Swapping)
메모리 관리 기법 중 하나.
특정 데이터를 사용할 때 임시로 저장한 후
필요에 따라 다른 데이터를 가져오거나 처리하는 방식.
예를 들어, 메모리에서 값 20을 가져와야 할 때
임시 버퍼에 값을 저장해 스위칭하고 사용하는 방식이다.
이러한 기능들은 그래픽 프로그램에서 성능을 최적화하고,
플랫폼 간 호환성을 높이는 데 크게 기여한다.
03 실행 환경 설정
주로 그래픽 프로그램이나
응용 프로그램을 실행할 때 중요한 요소를 다룬다.
이 과정은 경로, 메모리 관리, 이벤트 큐 등이 포함된다.
1 . 경로 설정
(Path Configuration)
프로그램이 실행되기 위해서는
파일의 경로가 정확하게 지정되어야 한다.
이는 프로그램의 실행 파일, 리소스, 라이브러리 파일 등이
어디에 위치하는지 운영체제가 알아야 실행이 가능하다.
2 . 디스크 조각 수집
(Disk Defragmentation)
파일이 디스크에 흩어져 있는 조각들을
모아 더 빠르게 접근할 수 있게 해주는 작업.
속도 개선을 도모하고, 파일 접근을 최적화하기 위한
일종의 가비지 컬렉션 역할을 한다.
3 . 아규먼트 처리
(Arguments)
A int, B int와 같은 형태로 매개변수로 전달된다.
만약 함수 호출 시 인자가 주어지지 않으면
void와 같은 상태가 되며, 이는 함수 실행 중 오류를 발생시킬 수 있다.
4 . 프레임 버퍼 초기화
(Frame Buffer Initialization)
프로그램의 그래픽 화면이 새로고침 될 때 프레임 버퍼가 초기화된다.
프레임 버퍼는 화면에 렌더링될 내용을 저장하는 메모리 영역이다.
5 . 메인 함수
(Main Function)
프로그램이 실행될 때 운영체제로부터
인자(argument)나 이벤트(event)를 전달받는 주요 진입점.
프로그램이 실행되면서 필요한 자원들이 할당되고 메인 함수로 전달된다.
6 . 이벤트 큐
(Message Queue)
프로그램이 실행되는 동안 마우스 클릭, 키보드 입력 등과 같은
사용자 상호작용은 이벤트 큐에 저장된다.
이 큐는 FIFO(First In, First Out) 방식으로 처리되어,
먼저 발생한 이벤트가 먼저 처리된다.
사용자가 메뉴를 클릭하거나 특정 동작을 할 때마다 이벤트 큐에
이벤트가 추가되며, 프로그램은 이를 감지하고 처리하게 된다.
7 . 이벤트 처리 및 대기 상태
프로그램이 실행 중 아무런 이벤트(사용자 입력)가
발생하지 않으면, 대기 상태로 전환된다.
이때 이벤트가 발생할 때까지 기다리며,
사용자가 특정 동작을 하면 이를 처리한다.
만약 사용자가 종료 버튼을 누르면 프로그램은 종료되며,
그렇지 않으면 대기 상태가 유지된다.
대기 중에는 화면 보호기(스크린 세이버)가 실행될 수 있다.
8 . 패치 및 디스패치
(Fetch & Dispatch)
이벤트 큐에서 발생한 이벤트를 꺼내는 과정.
꺼낸 이벤트는 분석 후, 디스패치 과정을 거쳐
해당 이벤트에 맞는 작업을 수행하게 된다.
이 과정은 계속 반복되며, 이벤트가 발생할 때마다
메인 함수에서 콜백 함수로 전환되어 이벤트 처리가 이루어진다.
9 . 디스플레이 이벤트
(Display Event)
프로그램에서 필수적으로 발생하는 이벤트 중 하나.
이는 화면에 출력할 내용을 다시 그리는 작업과 관련이 있으며,
사용자가 화면을 조작할 때 항상 발생하게 된다.
10 . 이벤트 기반 프로그래밍
(Event-Driven Programming)
프로그램은 이벤트 기반으로 구동된다.
라이브러리를 활용하면 이러한 이벤트를 관리하고 처리할 수 있으며,
사용자는 이벤트를 정의하여 프로그램이 어떻게 반응할지를 제어할 수 있다.
결론적으로, 프로그램이 올바르게 동작하도록 하기 위해
경로 설정, 메모리 관리, 사용자 상호작용을 처리하는
이벤트 큐를 관리하는 중요한 단계이다.
교제: OpenGL로 배우는 3차원 컴퓨터 그래픽스(p.140)
'2024 - 2학기 > OpenGL' 카테고리의 다른 글
5.1 오픈지엘 기본 틀 (2) | 2025.02.05 |
---|---|
4.2 오픈지엘 API (0) | 2025.02.05 |
4.1 오픈지엘 API (2) | 2025.02.04 |
3.2 그래픽 컬러 처리 (6) | 2025.02.04 |
3.1 그래픽 컬러 처리 (0) | 2025.02.02 |