OpenGL 정의
- cross-language : 언어에 구애받지 않음
- cross-platform : 실행되는 platform(또는 platform)에 구애받지 않음
- Window, Linux, MacOS 다 됨.
- API(application programming interface) : 프로그래머를 위한 interface 제공
- for rendering 2D and 3D vector graphics : 2D, 3D 벡터 그래픽을 렌더링함
OpenGL은 다음과 같은 언어를 지원한다.
Ada, Common Lisp, C#, Delphi/Free Pascal(Object Pascal), Fortran, FreeBASIC, Haskell, Java, Lua, Perl, PowerBASIC, Python, Racket, Ruby, ThinBASIC, Visual Basic.
또, C/C++ 도 당연히 지원한다.
All of them are ultimately based on the C/C++ bindings.
-OpenGL wIki-
OpenGL 용도
Desktop Application을 개발을 하는 데 사용할 수 있다!
OpenGL 개발환경 설정
우리는 위와 같이 많은 플랫폼과 언어 중에서, Window라는 플랫폼에서 C/C++라는 언어를 사용하여 개발할 것이다. 또, IDE로는 Visual Studio 2019를 사용할 것이다.
1. VS 2019에서 빈 프로젝트를 만든다.
2. 프로젝트-> 속성에서 상단에 있는 구성을 "모든 구성"과 플랫폼을 Win32로 변경한다.
3. Freeglut(OpenGL Utility Toolkit library) - freeglut 3.0.0 MSVC Package를 설치한다.
4. freeglut의 압축을 풀고 다음의 파일 및 폴더를 프로젝트 폴더(프로젝트 오른쪽 클릭 후 X누르기 : 파일 탐색기에서 열기)에 copy & paste 한다.
- include 폴더
- lib 폴더
- bin/freeglut.dll 파일
5. 소스파일에 main.cpp을 만든다. (없으면 이후 C/C++ 속성이 뜨지 않음)
6. 프로젝트 -> 속성에서, C/C++->일반-> 추가 포함 디렉터리에 "./include"를 추가
7. 프로젝트-> 속성에서 링커-> 일반-> 추가 라이브러리 디렉터리에 "./lib" 추가
8. 프로젝트->속성 에서 링커-> 입력-> 추가 종속성에 다음 파일 들 추가(중간에 세미콜론(;) 또는 개행 문자(enter) 반드시 넣기)
- freeglut.lib
- opengl32.liib
- glu32.lib
9. glew(openFL extension wrangler library) 다운(binary 파일 window 32-bit and 64-bit 전용)
10. 전체 glew-2.1.0 폴더를 프로젝트 폴더에 copy&paste
11. 프로젝트->속성 에서 C/C++->일반-> 추가 포함 디렉터리에 "./glew-2.1.0/include" 추가
12. 프로젝트->속성 에서 링커-> 일반-> 추가 라이브러리 디렉터리에 "./glew-2.1.0/lib/Release/Win32" 추가
13. 프로젝트->속성 에서 링커-> 입력-> 추가 종속성에 enter 후 "glew.lib" 추가
14. "glew-2.1.0/bin/Release/Win32/glew.dll" 파일을 프로젝트 폴더에 copy&paste
Hello OpenGL!
- 반드시 glew.h -> glut.h 순서로 include 할 것
- glewInit() -> myinit() 순으로 호출할 것.
샘플 코드를 활용해 첫 OpenGL 코드를 작성해보자.
#include <GL/glew.h>
#include <GL/glut.h>
#include <stdlib.h>
void myinit(void) {
// currently, does nothing
}
void mykeyboard(unsigned char key, int x, int y) {
switch (key) {
case 27: // ESCAPE
exit(0);
break;
}
}
void mydisplay(void) {
glClearColor(1.0F, 1.0F, 1.0F, 1.0F);
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}
int main(int argc, char* argv[]) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(0, 0);
// replace “simple” by your student number and name
glutCreateWindow("hello OpenGL!");
glutDisplayFunc(mydisplay);
glutKeyboardFunc(mykeyboard);
glewInit();
myinit();
glutMainLoop();
return 0;
}
결과
ctrl+F5로 디버깅하지 않고 실행을 해보자!
다음에도 OpenGL 관련 포스팅을 하겠다.
이 포스팅은 다음을 참고하여 작성하였다.
'개발 > OpenGL' 카테고리의 다른 글
OpenGL을 위한 선형대수 (3Blue1Brown 요약) (0) | 2021.03.04 |
---|
댓글