본문 바로가기

ComputerScience/Computer Graphics

OpenGL - 3 Creating a window

728x90

* always thanks to https://learnopengl.com/

 

Learn OpenGL, extensive tutorial resource for learning Modern OpenGL

Welcome to OpenGL Welcome to the online book for learning OpenGL! Whether you are trying to learn OpenGL for academic purposes, to pursue a career or simply looking for a hobby, this book will teach you the basics, the intermediate, and all the advanced kn

learnopengl.com

3. Creating a window

- 가장 먼저 해야할 일은 OpenGL context를 정의하고 사용자의 input을 받아 그림을 그릴 application window를 만드는 일이다

- 이러한 동작들을 쉽게 구현할 수 있도록하는 library들이 있다. 그중 우리는 GLFW를 사용할 것이다.

3.1 GLFW

- OpenGL만을 위해 C로 만들어진 라이브러리.

- OpenGL context를 생성하고 window parameters를 정의하고 user input을 다룰 수 있도록 해준다.

3.2 Building GLFW

- MacOS에서 homebrew를 통해 glfw source package를 설치를 한다.

brew install glfw

3.2.1 CMake

- 프로젝트, 솔루션 파일을 만들어주는 프로그램

brew install cmake

 

3.3 Our first project

- Xcode로 프로젝트를 하나 생성해보자.

3.4 Linking

- 프로젝트가 GLFW를 사용하기 위해서는 프로젝트에 library를 link해줘야 한다. 지금 우리의 프로젝트는 glfw3.lib가 어느 directory에 있는지 모르기 때문에 프로젝트 이 위치를 알려줘야한다.

- /opt/homebrew/Cellar/위치로 가보면 glfw폴더가 있을 것이다. 그 안에 있는 libglfw.3.3.dylib파일을 추가해준다.

link Binary with libraries에 설치한 glfw 라이브러리 파일을 추가해준다.

- 이렇게 헤더파일의 위치를 찾을 수 있도록 해주었다면 링커에게 라이브러리 이름을 정해주어야 한다.

- 헤더파일이 있는 폴더의 경로를 입력해준다.

build settings에서 header file glfw경로 추가

- 그럼 이제 #include <GLFW/glfw3.h>처럼 사용할 수 있도록 해준다.

3.5 GLAD

- OpenGL은 어디까지나 표준사양이다. 어떤 OpenGL드라이버를 그래픽카드에 탑재 하였는지는 제조사의 결정이다.

- 개발자 입장에서는 특정 그래픽 카드의 드라이버 사양에 맞는 함수를 런타임에서 찾게 되고 따라서 시간이 소요된다.

 

3.5.1 Setting up GLAD

- OpenGL의 버전을 정의하고 해당 버전에 따라 모든 관련된 OpenGL 함수를 정의하고 로드 할 수 있는 웹 서비스를 제공한다.

- https://glad.dav1d.de/ 

 

https://glad.dav1d.de/

Extensions...

glad.dav1d.de

- 항목들을 체크하고 맨 밑에 generate 클릭

- .zip폴더를 다운로드 한다.

- glad폴더를 프로젝트에 이동시킨다.

- 아래처럼 컴파일 소스 목록에 glad.c를 추가해준다.

- #include <glad/glad.h> 처럼 사용하기 위해 search paths에 경로를 지정해준다.

 

728x90
반응형

'ComputerScience > Computer Graphics' 카테고리의 다른 글

OpenGL - 5 Hello Triangle (3)  (0) 2021.06.30
OpenGL - 5 Hello Triangle (2)  (0) 2021.06.29
OpenGL - 5 Hello Triangle (1)  (0) 2021.06.29
OpenGL - 4 Hello Window  (0) 2021.06.25
OpenGL - 2 OpenGL  (0) 2021.06.22