기본적인 코딩(Hello world)는 해보신 분들이라고 가정하고 작성 하였습니다.다른 내용들은 중간중간에 다른 카테고리에 포스팅할 예정입니다. :-]
OpenGL을 통한 게임엔진 만들기를 시도해보려고 하면서, 참 알아야 할게 많은 거 같다는 생각이 드네요. 기본적인 프로그래밍적인 지식을 포함하고, 그외에 관련 라이브러리들의 내용들... 일단 확장라이브러리는 둘째치고, 지금은 거의 기본적(?)으로 사용하고 있는 glut를 설치 하고 간단한 테스트를 하는 것을 목표로 하려고 합니다. 영문사이트다 보니, 관련내용을 직접 보기는 조금 힘들고, 하나하나 나중에 찾아가면서 정리해야 겠어요 :-)
저는 일단 windows, visual studio2010환경에서 설치하였습니다.
- SDK 설치
- OpenGL 공식 사이트(www.opengl.org) 에서 "Coding Resources" 항목을 선택한다.
- 우측 메뉴중에 GLUT&Utility Libraries중 GLUT 항목을 선택한다.
- GLUT for Microsoft Winodws 95 & NT users의 항목을 클릭 하면 해당 라인으로 이동하게 되는데, 각종 소스파일을 알고 싶으면 source code distribution을 받으면 됩니다만, 저는 실행하는데 의의를 두기 때문에 일단 밑에 쪽에 header file과 .lib, .DLL 파일만 받도록 하겠습니다.
- 압축을 풀게 되면 아래와 같은 파일들이 나오게 되고 각 파일들을 해당 경로에 옮겨야 합니다. (<- 사실 이 과정에서 윈도우환경에서 코딩 할 때 지식이 필요 하지만 일단 생략 할게요 :-) 전 쿨하니까요ㅋ)
확장자로 구별해서 넣으시면 됩니다.
.dll = C:\Windows\System32
.h = C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl(OpenGL관련한 확장 라이브러리들이 많이 있기 때문에 저는 폴더를 별도로 만들었어요:-))
.lib = C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib
이번에 설치 하면서 .lib와 .dll이 두개 씩 있어서 봤는데(glut, glut32) 튜토리얼 사이트에 친절히 설명되어 있더군요 :-) 그냥 glut만 되어 있는 건 SGI version for Windows이고, glut32로 되어 있는 건 Microsoft's version 이라고 되어있네요. 둘 다 복사해도 충돌은 없는지 모르겠지만;;
- 프로젝트 생성 및 실행
(기본적으로 HelloWorld는 모두 해보셨다고 가정하고) 프로젝트를 만들었습니다.
흔하디 흔한 Hello 시리즈로... HelloOpenGL 이라는 빈 프로젝트를 만들었구요, 코드는 아래와 같습니다.
#include <gl/glut.h> void Display(){ 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(){ glutCreateWindow("HelloOpenGL"); glutDisplayFunc(Display); glutMainLoop(); return 0; }
라는 좋은 문구가 비스 하단에 떴네요 :-)
실행하면 아래와 같은 화면이 뜨게 됩니다.
코드의 설명은 생략 할게요. 일단은 설치해서 돌아 가는 거만 확인하려고 했던 거니까요.(
절대 졸려서 그러는건 아니에요 :-))
'Programming > OpenGL' 카테고리의 다른 글
OpenGL states (0) | 2011.12.22 |
---|---|
Basic OpenGL programming Full-Screen (0) | 2011.12.12 |
Basic OpenGL programming in Windows_2 (0) | 2011.12.01 |
Basic OpenGL programming in Windows_1 (0) | 2011.11.30 |
gluUnProject function (0) | 2011.01.27 |