OpenGL이란?

Developer/OpenGL 2012. 10. 24. 23:42

OpenGL이란?

그래픽 하드웨어 제어를 위한 소프트웨어 인터페이스로 높은 이식성과 빠른 실행속도를 가진 3D그래픽&모델링 라이브러리이다.

OpenGL은 프로그래밍 언어가아님 어플리케이션 프로그래밍 인터페이스(API)로 사용된다.

 

OpenGL의 작동

OpenGL은 순차적인 그래픽 API로 장면이 어떻게 보여지는지 묘사하는 방식이 아니라 특정한 외형과 효과를 내기위해 어떤 단계들이 필요한지 차례대로 지정하는 방식으로 이루어진다. 각 단계는 다양한 OpenGL명령의 호출로 진행되는데, 이 명령어들은 점이나 선, 폴리곤 등과 같은 기본 모델들을 그리는데 사용된다. 이밖에도 조명, 쉐이딩, 텍스쳐 맵핑, 블렌딩, 투명도 설정, 애니메이션 등의 다양한 특수 효과들을 지원한다.

 

라이브러리와 헤더

마이크로소프트 윈도우즈에서는 OpenGL을 소프트웨어 렌더로서 지원하고 있기 때문에, OpenGL을 사용하여 OpenGL함수를 호출하도록 쓰여진 프로그램의 경우, 마이크로소프트 임플리먼테이션이 3D렌더링 함수를 수행하고 그 결과가 애플리케이션에 표현된다.

마이크로소프트의 소프트웨어 임플리먼테이션은 openg132.dll에 담겨있으며 이는 윈도우즈 system디렉토리에서 찾을수 있다. 또한 대부분의 운영체제에서 OpenGL라이브러리는 OpenGL유틸리티 라이브러리와 함께 사용되는데 glu32.dll에 담겨있다.

 

모든OpenGL 함수, 타입 그리고 매크로에 대한 프로토타입은 헤더파일인 gl.h에 담겨있다. 유틸리티 라이브러리 함수의 경우 glu.h라는 파일에 프로토 타입이 담겨져있으며 gl.h와 함께 첨가(include)경로에 저장되어있다

OpenGL을 사용하는 일반적인 윈도우즈 프로그램의 헤더는 대개 다음과 같은 형식으로 구성된다. 

 #include <windows.h>

 #include <gl/gl.h>

 #include <gl/glu.h>

 

데이터타입

 OpenGL 데이터타입

설명

대응되는 C데이터타입

접두어 

GLbyte

8비트 정수

signed char

b

 GLshort

 16비트 정수

 short

 s

 GLint, GLsizei

 32비트 정수

 long

 l

 GLfloat, Glclampf

 32비트 실수

 float

 f

 GLdouble, GLclampd

 64비트 실수

 double

 d

 GLubyte, GLboolean

 8비트 부호없는 정수

 unsigned char

 ub

 GLuShort

 16비트 부호없는 정수

 unsigned short

 us

 GLunit, GLenum, GLbitfieId

 32비트 부호없는 정수

  unsigned long

 ui

[표] : OpenGL변수 타입과 C데이터타입

OpenGL의 모든데이터 타입은 GL로 시작하여 그 뒤에 타입의 종류를 경정짓는 byte, short, int float등의 단어가 붇는다 u가 붙은 것은 부호가없는 usigned데이터 타입을 의미한다. size과 같은 단어는 길이나 깊이와 같은 값을ㄷ 담는데 쓰이는 데이터 타입이다.

 

함수의 이름짓기 규칙

대부분의 OpenGL 함수들은 일정한 이름짓기 규칙을 따르고 있으며, 이 규칙을 사용하면 이름만 보아도 인자가 몇개이며 어떤 타입인지, 어떤 라이브러리 함수인지 등을 알수있는 경우가 많다.

 

OpenGL함수 이름의 기본적인 형식

 <라이브러리 접두어><루트명령어><선택적인 인자의 수><선택적인 인자의 타입>

 ex) glColor3f 함수의 루트는 color이며 gl은 gl라이브러리를, 3f는 3개의 실수인자를 가진다는 의미로 해석하면 된다.

'선택적'이라는 것은 그부분을 반드시 써야할 필요는 없고 필요에 따라 사용된다는 의미이다.

 

OpenGL개발환경 만들기

 

OpenGL.zip

 

 

1. 위에 OpenGL 압축파일을 다운받는다.

2. header폴더에있는 header파일을 "비주얼스튜디오가 설치된경로\VC\include\gl" 붙여넣는다.

3. lib폴더에있는 라이브러리 파일을 "비주얼스튜디오가 설치된경로\VC\lib"에 붙여넣는다.

4. DLL파일은

- 32비트 운영체제 :  C:\Windows\System32

- 64비트 운영체제 :  C:\Windows\System32, C:\Windows\SysWOW64

의 폴더에 붙여넣는다

5. 비주얼 스튜디오 추가종속성 설정을 한다(opengl32.lib, glut32.lib, glu32.lib)

 

간단한 예제 

 

#include<Windows.h>

#include<gl/GL.H>

#include<gl/GLU.H>

#include<gl/glut.h>

 

void RenderScene(void) {

           glClear(GL_COLOR_BUFFER_BIT);    //내용을 지움

           glFlush();          //지금까지 실행되지 않은 모든 OpenGL명령어를 실행하도록함.

}

 

void SetupRC(void) {

           glClearColor(0.0f, 0.0f, 1.0f, 1.0f);    //창을 지우는데 사용할 색상지정

}

 

int main(void) {

           glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);      //싱글버퍼창과 RGBA색상모드를 사용하여 창을 만든다.

           glutCreateWindow("Simple");        //화면의 창을 만드는 GLUT라이브러리 호출, 캡션을 simple로 저장

           glutDisplayFunc(RenderScene);      //GLUT가 창이 그려질때 지정된 함수를 호출하도록 함수포인터 주소값전달

           SetupRC();         // 렌더링이 이뤄지기전에 필요한 OpenGL의 초기화

           glutMainLoop();  //GLUT 프레임웍을 실행

}

 

- 출력결과 -

'Developer > OpenGL' 카테고리의 다른 글

좌표체계(Clipping, Viewport)  (0) 2012.10.28
도형그리기  (0) 2012.10.28
Posted by No names
,