OpenGL 라이브러리의 종류
- GL(OpenGL Core Library)
: 렌더링 기능을 제공하는 함수 라이브러리로 지엘은 단지 렌더링 기능만 수행할 뿐 사용자의 입력을 받는 기능과 출력하는 기능이 없다.
- GLU(OpenGL Utility Library)
: GL 함수로 작성되어 있는 고급 기능을 제공하는 함수들의 집합
- GLUT(OpenGL Utility Toolkit)
: 사용자 입력을 받거나 화면 윈도우를 제어하기 위한 함수로 운영체제를 호출한다.
Visual Studio 의 경우
OpenGL 다운로드
https://www.opengl.org/ |
OpenGL 공식 홈페이지에 들어가면 상단에 Coding Resources 메뉴에 GLUT & Utility Libraries 항목이 있다.
Coding Resources > GLUT & Utility Libraries 항목에 들어오면 오른쪽 메뉴에 GLUT 가 있는데 이 페이지로 이동하자.
GLUT 페이지의 맨 하단에 보면 OpenGL 라이브러리를 다운로드할 수 있다.
파일의 내용은 다음과 같이 구성되어 있다.
여기에서 각각의 파일들을 복사를 해서 옮겨 주어야 한다.
복사를 해 줘야하는 위치는 os의 bit와 visual studio 버전에 따라 다른 듯하다.
운영체제의 bit 종류에 따라 "Program Files"에 (x86)이 붙은 경로일 수 있고 안 붙은 경로일 수 있으며,
visual studio의 버전에 따라 각각의 파일을 복사해줘야 하는 위치가 바뀔 수 있다
그리고 visual studio가 설치되어 있는 디렉토리에 각각의 파일을 복사하면 된다.
visual studio의 버전에 따라 디렉토리 경로가 "Windows Kits\8.1\" 가 아닐 수 있음을 주의 하자.
visual studio의 버전에 따라 설치된 경로를 알고 있다면 OpenGL을 사용하기가 쉽다.
"gult.h"
이 파일은
"C:\Program Files (x86)\Windows Kits\8.1\Include\um\gl"
위치에 복사해 준다. 나는 windows8.1 64bit에 visual studio 2013 버전을 사용하기 때문에 다음과 같은 위치에 저장했다
"glut.lib", "glut32.lib"
이 파일은
"C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86"
위치에 복사해 준다.
"glut.dll", "glut32.dll"
이 파일은
"C:\Windows\System32"
위치에 복사해 준다.
그리고 MS Visual Studio를 실행하고 프로젝트를 생성해서 프로젝트 속성에 있는 링커 항목에
입력 항목으로 들어가서 추가 종속성에
glut32.lib;
glu32.lib;
opengl32.lib;
를 입력하여 링커 시켜주어야 한다.
Eclipse의 경우
MinGW 다운로드
하기 링크를 통해 다운로드하고 설치한다.
설치 후엔 환경변수 설정을 해줘야 한다.
http://www.mingw.org/ |
Eclipse CDT 설치
help > install new software... 메뉴를 통해 CDT 설치
http://download.eclipse.org/tools/cdt/releases/8.8.1 |
FreeGLUT 다운로드
하기 Freeglut를 다운로드하고 "C:\Windows\System32" 경로에 "freeglut.dll"복사해둔다.
freegult의 파일 내용 중 bin, include, lib 내용의 mingw에도 각각의 해당 경로에 복사해준다.
http://freeglut.sourceforge.net/index.php#download |
Eclipse link 설정
프로젝트의 properties에서 c/c++ build > settings > tool settings > mingw c++ linker의 libraries (-l)에
opengl32
glu32
freeglut
내용 추가해준다.
*추가적으로 FreeGult를 사용하면 빌드된 exe 파일과 freeglut.dll 파일이 같은 디렉토리에 존재해야 한다.
Test 방법
설치가 잘 되었는지 테스트는 아래 소스와 같이 하면 된다.
#include <gl⁄glut.h>
void MyDisplay()
{
glClear(GL_COLOR_BUFFER_BIT); //색 버퍼 비우기
glBegin(GL_POLYGON); //다각형 그리기
//다각형의 꼭지점 포인트
glVertex3f(-0.5, -0.5, 0.0);
glVertex3f(0.5, -0.5, 0.0);
glVertex3f(0.5, 0.5, 0.0);
glVertex3f(-0.5, 0.5, 0.0);
glEnd(); //다각형 그리기 종료
glFlush(); //버퍼의 내용을 화면에 뿌리고 새로운 내용이 버퍼에 쓰여짐.
}
int main(void)
//int main(int argc, char *argv[]) //freegult를 사용한 경우 main 함수의 인자값을 받아 init이 필요하다.
{
// glutInit(&argc, argv); //freegult를 사용한 경우 main 함수의 인자값을 받아 init이 필요하다.
glutCreateWindow("OpenGL Drawing Exaple");
glutDisplayFunc(MyDisplay); //디스플레이 이벤트에 대한 콜백 함수로 등록
glutMainLoop(); //main() 무한루프
return 0;
}
만약 컴파일하고 실행했을 때 다음과 같은 오류가 난다면 컴파일된 실행파일의 위치에 glut32.dll파일을 복사해서 넣어주면 해결된다. 아니면 "C:\Windows\SysWOW64" 디렉토리에 "glut.dll", "glut32.dll" , FreeGLUT 인
경우 "freeglut.dll" 파일을 복사해서 넣어주면 매번 번거롭게 실행파일 위치에 복사해 줄 필요가 없이 바로 실행된다.
실행을 해보면 다음과 같은 아무 문제없이 올바른 결과물이 출력된다.
'Windows > OpenGL' 카테고리의 다른 글
06. OpenGL Programming - GLUT의 기능 (0) | 2014.10.12 |
---|---|
05. OpenGL Programming - 함수 구조와 데이터 타입 (0) | 2014.10.12 |
03. OpenGL 학습을 위한 기본 지식 - 그래픽 API와 OpenGL (0) | 2014.10.11 |
02. OpenGL 학습을 위한 기본 지식 - 표준과 기본요소 (0) | 2014.10.11 |
01. OpenGL 학습을 위한 기본 지식 - 그래픽스 (0) | 2014.10.11 |