본문 바로가기
개발/OpenGL

OpenGL 시작하기(개발환경 설정)

by amkorousagi 2021. 3. 3.

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
언어 지원

 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를 사용할 것이다.

 

Windows 및 Mac용 Visual Studio 2019 다운로드

Visual Studio Community, Professional, Enterprise를 다운로드하세요. 지금 Visual Studio IDE, Code 또는 Mac을 무료로 사용해 보세요.

visualstudio.microsoft.com

1. VS 2019에서 빈 프로젝트를 만든다.

 

 

 

 

 

2. 프로젝트-> 속성에서 상단에 있는 구성을 "모든 구성"과 플랫폼을 Win32로 변경한다.

OpenGL
프로젝트 속성

 

 

 

 

 

 

3. Freeglut(OpenGL Utility Toolkit library) - freeglut 3.0.0 MSVC Package를 설치한다.

 

freeglut Windows Development Libraries

Introduction Whilst at the University of Essex, I took a module called “Interactive Computer Graphics” (or EE222 as we referred to it). Half of the course consisted of using POV-Ray to create images, and then putting them together to make a high qualit

www.transmissionzero.co.uk

 

 

 

 

4. freeglut의 압축을 풀고 다음의 파일 및 폴더를 프로젝트 폴더(프로젝트 오른쪽 클릭 후 X누르기 : 파일 탐색기에서 열기)에 copy & paste 한다.

  • include 폴더
  • lib 폴더
  • bin/freeglut.dll 파일

OpenGL
파일 복붙

 

 

 

5. 소스파일에 main.cpp을 만든다. (없으면 이후 C/C++ 속성이 뜨지 않음) 

 

 

 

 

6. 프로젝트 -> 속성에서,  C/C++->일반-> 추가 포함 디렉터리에 "./include"를 추가

OpenGL
추가 포함

 

 

7. 프로젝트-> 속성에서 링커-> 일반-> 추가 라이브러리 디렉터리에 "./lib" 추가

 

OpenGL
추가 라이브러리

 

 

 

8. 프로젝트->속성 에서 링커-> 입력-> 추가 종속성에 다음 파일 들 추가(중간에 세미콜론(;) 또는 개행 문자(enter) 반드시 넣기)

  • freeglut.lib
  • opengl32.liib
  • glu32.lib

OpenGL
추가 종속성

 

 

 

 

9. glew(openFL extension wrangler library) 다운(binary 파일 window 32-bit and 64-bit 전용)

 

GLEW: The OpenGL Extension Wrangler Library

The OpenGL Extension Wrangler Library The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension loading library. GLEW provides efficient run-time mechanisms for determining which OpenGL extensions are supported on the tar

glew.sourceforge.net

OpenGL
다운

 

 

 

 

 

10. 전체 glew-2.1.0 폴더를 프로젝트 폴더에 copy&paste

OpenGL
복붙

 

11.  프로젝트->속성 에서 C/C++->일반-> 추가 포함 디렉터리에 "./glew-2.1.0/include" 추가

OpenGL
추가 포함

 

 

 

 

12. 프로젝트->속성 에서 링커-> 일반-> 추가 라이브러리 디렉터리에 "./glew-2.1.0/lib/Release/Win32" 추가

OpenGL
추가 라이브러리

 

 

 

13. 프로젝트->속성 에서 링커-> 입력-> 추가 종속성에 enter 후 "glew.lib" 추가

OpenGL
추가 종속성

 

 

 

14. "glew-2.1.0/bin/Release/Win32/glew.dll" 파일을 프로젝트 폴더에 copy&paste

OpenGL
dll 복붙

 

 

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
Hello OpenGL !

 

 

 

다음에도 OpenGL 관련 포스팅을 하겠다.

 

이 포스팅은 다음을 참고하여 작성하였다.

 

Getting Started - OpenGL Wiki

So you want to take advantage of the power of the OpenGL API? If you are visiting this page because a game or software uses the OpenGL API, you need to install the appropriate graphic driver which enables usage of the functionality provided. To program usi

www.khronos.org

 

'개발 > OpenGL' 카테고리의 다른 글

OpenGL을 위한 선형대수 (3Blue1Brown 요약)  (0) 2021.03.04

댓글