디스플레이 리스트 
변경되지 않는 일련의 명령어들을 컴파일하여 빠른 속도의 렌더링을 위해 사용한는 방법

OpenGL 함수의 실행모드는 두가지로 분류 된다.


1. 직접모드
물체를 화면에 그림과 동시에 물체 생성과 관련된 모든 정보를 파기해 버린다. 따라스 그 물체를 다시 그리려면 모든 코드를 처음부터 다시 실행해야 한다.

2. 보류모드
정의된 물체 정보를 그대로 유지하고 재사용한다. 이미 정의된 물체를 컴파일 된형태로 재 사용함으로써 빠른 속도를 보장한다. OpenGL의 보류모드는 디스플레이 리스트에 의해 이루어진다.

디스플레이 리스트를 선언하기 위해서는 먼저 glGenLists함수를 호출하고 리턴값을 저장해둔다.
그리고 glNewList 함수와 glEndList내부에 사용할 명령어들을 정의 한다.
마지막으로 렌더링함수에서 glCallList함수를 호출 해줌으로써 실행된다.
그러나 디스플레이 리스트의 내용은 한 번 정의되면 일부만 수정이 불가능하게 되므로 수정을 원한다면 전체를 다시 생성해야 한다.

GLuint glGenLists(GLsizei range);
이 함수는 사용 안된 디스플레이 리스트중 첫번째의 아이디를돌려 준다. range는 원하는 아이디의 갯수 이며 어려개를 할당할려면 다음과 같이 한다.
GLuint list1, list2
list1 = glGenLists(2);
list2 = list1+1;

glNewList(GLuint list, GLenum mode);
이 함수는 이제 나오는 명령들을 리스트로 만든다. list는 glGenLists에서 넘겨받은 ID값이다.
mode는 2가지가 있는대 하나는 컴파일만 시키는 GL_COMPILE과 컴파일을 함과 동시에 명령을 즉시 실행하는 GL_COMPILE_AND_EXECUTE가 있다.

void glEndList(void);
이 함수는 리스트로 만들 명령어가 끝났음을 의미한다

void glCallList(GLuint list);
이 함수는 glNewList함수로 컴파일한 리스트를 실행하는 함수이다. list에는 ID값을 넘겨준다.



'라이브러리 > OpenGL' 카테고리의 다른 글

조명과 음영  (0) 2009.03.24
OpenGL의 투영과 뷰포트 변환  (0) 2009.03.24
OpenGL의 모델변환 및 행렬스택  (0) 2009.03.22
기하 변환  (0) 2009.03.22
3차원 물체의 표현  (0) 2009.03.22
정점배열  (0) 2009.03.22
GLUT 모델링  (0) 2009.03.21
OpenGL의 좌표계, 뷰포트  (0) 2009.03.21
파이프라인과 상태변수  (0) 2009.03.21
OpenGL의 설계원리  (0) 2009.03.21
Posted by crownog
,