OpenGL #1

황재진·2023년 8월 16일
0

OpenGL

목록 보기
1/2
💫 Window 운영체제를 사용하며, 해당 정보는 LearnOpenGL 이라는 사이트에 기반해 작성했습니다. 부정확한 내용이 있을 수 있으니, 그러한 내용이 있는 경우 알려주시면 감사하겠습니다.

OpenGL 프로젝트 세팅

OpenGL에서 윈도우를 생성하기 위해 라이브러리를 사용할 겁니다.
GLUT, SDL, SFML, GLFW와 같은 라이브러리가 있습니다.
이러한 라이브러리들은 모든 운영체제에 관한 작업에 대한 정보와 렌더링할 윈도우와 OpenGL context를 지원합니다.
우리는 GLFW 라이브러리를 사용할 계획입니다.

GLFW

GLFW는 C로 작성된 라이브러리로, 특히 OpenGL을 목표로 만들어졌습니다.

이 링크로 들어가면 GLFW를 받을 수 있습니다. 32비트를 다운로드하는 것을 추천드립니다.
아래와 같은 폴더들이 있다면 성공입니다.

소스코드를 컴파일해 라이브러리를 생성하면 최종 라이브러리가 우리 컴퓨터 CPU와 OS에 완전히 맞춰지게 됩니다.
그러나 해당 방식의 단점은 모든 사람이 동일한 IDE를 사용하는 것이 아니기에 특정 IDE와 호환되지 않을 수 있습니다.
이 문제를 해결하기 위해 CMake라는 프로그램을 사용합니다.

CMake

CMake는 사전정의된 CMake 스크립트를 기반으로 사용자가 선택한 프로젝트, 솔루션 파일을 생성할 수 있는 프로그램입니다.
이를 이용해 GLFW 소스 패키지에서 Visual Studio 프로젝트를 생성할 수 있습니다.
먼저 이 링크에서 CMake를 다운로드합니다.
CMake를 열면 아래와 같은 화면이 나올 겁니다.
Where is the source code쪽에는 다운로드 받았던 GLFW 소스 패키지 루트폴더를 선택합니다.
Where to build the binaries쪽에는 GLFW 소스 패키지 루트폴더 안에 build 폴더를 생성한 후 해당 폴더를 선택합니다.
그러고 난 후 Configure 버튼을 누르면 아래와 같은 창이 나옵니다.

Visual Stuido 버전을 선택 후 Finish를 누른 다음 Generate 버튼을 누르면 프로젝트 파일이 build 폴더 내에 생성됩니다.

sln 파일을 열면 솔루션 파일이 다음과 같이 구성되어있을 겁니다.
ALL_BUILD를 시작프로젝트로 설정한 후 빌드한 후 프로젝트 폴더의 /src/Debug 폴더에 가면 glfw3.lib 파일이 생성되었을 것입니다.

새 프로젝트

이제 새 빈 프로젝트를 생성합니다.
그리고 해당 프로젝트가 GLFW를 사용하기 위해선 라이브러리를 프로젝트와 링킹해야 합니다.
링커 설정에서 glfw3.lib를 사용하도록 설정해야 합니다.

프로젝트 속성 -> VC++ 링커 디렉터리로 이동합니다.

이곳에서 라이브러리 디렉터리에는 glfw3.lib가 있던 폴더를 추가합니다.
편집을 누른 후 아래 사진과 같이 경로를 추가하면 됩니다.

외부 include 디렉터리에는 glfw 소스 패키지 폴더 안에 있는 include 폴더를 추가합니다.
방식은 라이브러리 디렉터리에 추가하는 방식과 동일합니다.

이제 VS에서 필요한 모든 파일을 찾을 수 있기에 링커 -> 입력으로 이동해 GLFW를 프로젝트에 연결합니다.
추가 종속성에 아래와 같이 glfw3.lib와 opengl32.lib를 추가합니다.

그러면 GLFW 세팅이 마무리됩니다.

GLAD

마지막으로 GLAD 라이브러리를 세팅할 것입니다. GLAD는 OpenGL의 버전을 정의하고 해당 버전에 관련된 모든 OpenGL 함수를 정의합니다.
이 링크에 접속해 OpenGL 3.3 이상의 버전을 선택 후 프로파일을 Core로 설정한 후 언어를 C++로 설정한 후 생성합니다.

이런 창이 뜨고, glad.zip을 다운로드해줍니다.
해당 파일을 압축해제하면 include와 src 두 폴더가 있을겁니다.

include 폴더 내부에 있는 두 폴더는 복사해 GLFW 소스 패키지 안에 있던 include 폴더에 붙여넣기합니다.

src 폴더 내에 있는 glad.c는 프로젝트에 추가합니다.

아래와 같이 두개의 include가 정상적으로 작동한다면 GLFW와 GLAD 모두 정상적으로 적용된 겁니다.

profile
프로그래밍, 쉐이더 등 이것저것 다해보는 게임 개발자입니다

2개의 댓글

comment-user-thumbnail
2023년 8월 16일

유익한 글이었습니다.

1개의 답글