'라이브러리'에 해당되는 글 20건

기하변환이란 그래픽에서 물체의 이동, 회전, 크기조절 등의 작업들을 일컫는 말로 또는 변환이라고 한다.

1. 이동
탄력이 없는 단단한 물체를 이동하면 물체를 구성하는 모든 정점은 동일한 양만큼 움직이게 된다.

2.회전
물체를 회전을 시킬때는 아래의 공식을 적용한다.

X축을 기준의로 Y,Z평면의 회전


Y축을 기준의로 X,Z평면의 회전


Z축을 기준의로 X,Y평면의 회전

3. 크기조절
좌표계의 원점을 기준으로 물체의 크기를 변환 하는 것으로, 모든 배율이 같은 경우 균등 크기조절, 하나라도 다르면 차등 크기조절 이라한다.

4. 전단
물체를 한쪽 방향으로 밀어낸 것을 전단이라 한다. 이것은 물체 자체를 변형 시킨다. 

물체를 변환 시킬때 이동후 회전이나 회전후 이동등 순서에 따라 위치가 다르므로 순서에 유의 하여야 한다.



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

에일리어싱과 앤티-에일리어싱  (0) 2009.04.03
가시성 판단  (0) 2009.03.31
조명과 음영  (0) 2009.03.24
OpenGL의 투영과 뷰포트 변환  (0) 2009.03.24
OpenGL의 모델변환 및 행렬스택  (0) 2009.03.22
3차원 물체의 표현  (0) 2009.03.22
디스플레이 리스트  (0) 2009.03.22
정점배열  (0) 2009.03.22
GLUT 모델링  (0) 2009.03.21
OpenGL의 좌표계, 뷰포트  (0) 2009.03.21
Posted by crownog
,
우리가 컴퓨터에서 3차원 물체를 표현할때는 크게 두가지가 있다. 하나는 물체의 겉 표면만 표현하는 것이고 다른 하나는 내부까지 포함해서 표현 하는 것이다.
그중 많이 사용되는것은 겉표면만 표현하는 방법이다. 이른바 경계면 표현이라불리는 이방법은 평면 다각형의 집합으로 나타낸다.

3D 모델링 데이터 에서 면을 구성하고 있는 평면 다각형 하나하나를 메쉬, 표면 메쉬, 다각형 메쉬, 표면 다각형, 또는 단순히 다각형이라 부른다. 일반적으로 메쉬에 사용되는 다각형은 주로 사각형 또는 삼각형을 사용한다.


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

가시성 판단  (0) 2009.03.31
조명과 음영  (0) 2009.03.24
OpenGL의 투영과 뷰포트 변환  (0) 2009.03.24
OpenGL의 모델변환 및 행렬스택  (0) 2009.03.22
기하 변환  (0) 2009.03.22
디스플레이 리스트  (0) 2009.03.22
정점배열  (0) 2009.03.22
GLUT 모델링  (0) 2009.03.21
OpenGL의 좌표계, 뷰포트  (0) 2009.03.21
파이프라인과 상태변수  (0) 2009.03.21
Posted by crownog
,

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

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
,
정점 리스트 개별 정점을 가리키는 일종의 포인터에 해당한다.
정점 배열 : 정점 리스트를 사용하여 함수 호출의 횟수를 줄이기 위한 방법

glEnableClientState 함수를 사용 해서 사용할 배열을 활성화 할수 있다. 활성화 한수에는
gl(사용할배열종류명)Pointer 함수를 사용 하여 적용할 배열과 플래그 등을 설정해준다.
그리고 최종적으로 glDrawElements 함수에 정점리스트 및 필요한 파라미터를 넘겨 호출하면 렌더링을 한다.
(  예) Color배열을 등록할때는 glColorPointer 처럼 하면된다. 그리고 파라미터는 함수마다 다르므로 레퍼런스 확인)

void glEnableClientState(GLenum array);
array는 활성화할 배열의 상수값을 넣는다.

void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices)
mode는 그릴 형식(GL_POLYGON 등)을 지정 하고, count는 읽어올 정점리스트 갯수, type는 배열의 데이터형, indices는 정점리스트의 시작수로를 넘겨준다.

다각형의 정점을 명시할 때는 오른손 법칙을 사용 하면 반 시계 방향 순서로 명시해야 한다.


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

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
채도, 명도  (0) 2009.03.21
Posted by crownog
,