https://learnopengl.com/Getting-started/Creating-a-window
위의 자료를 번역한 내용입니다.
위의 자료를 번역한 내용입니다.
-------------------------------------------------------------------------------------------------------------------------
Creating a window
멋진 그래픽을 만들기 위해 우리가 해야할 필요가 있는 첫 번째 것은 OpenGL context를 만들고 안에다 그릴 application window를 만드는 것이다. 그러나 그러한 연산들은 운영체제마다 특수하다. 그리고 OpenGL은 의도적으로 이러한 연산으로부터 추상화하려고 한다. 이것은 우리가 윈도우를 만들어야만 하고 context를 정의하고 우리 스스로 user input을 다뤄야한다는 것을 의미한다.
운좋게도 이미 우리가 찾는 기능을 제공하는 몇 가지 라이브러리들이 있다. 그러한 라이브러리들은 우리에게 모든 운영체제 특수한 작업을 도와주고 우리에게 window와 렌더링할 OPenGL context를 준다. 좀 더 인기있는 라이브러리들은 GLUT, SDL, SFML 그리고 GLFW이다. 우리의 튜토리얼에서, 우리는 GLFW를 쓸 것이다.
GLFW
GLFW는 특히 스크린에 매력적인 것들을 렌더링하는데 요구되는 단순 필요한것들을 제공하는 OpenGL를 타겟으로하는 C로 쓰여진 라이브러리이다. 그것은 또한 우리가 OpenGL context를 만들고, window parameter를 정의하고 우리가 필요한 모든 것이 user input을 다루는 것을 허용한다.
이것과 다음 튜토리얼의 중점은 GLFW을 얻어서 구동시키고, 그리고 그것이 적절하게 OpenGL context를 만들게 하고, 그것이 적절히 우리가 렌더링할 윈도우를 보이게 하는 것이다. 튜토리얼은 GLFW library를 불러오고, 구축하고, 연결하는데 단계별 접근을 한다.이번 튜토리얼에서는 우리는 Microsoft Visual Studio 2015 IDE를 사용할 것이다. (프로세스는 최근 비쥬얼스튜디오 버전과 같다는 것을 주목해라). 만약 당신이 비쥬얼 스튜디오를 사용하지 않는다면, 걱정하지말라. 프로세스는 대부분의 다른 IDE와 비슷하다.
Building GLFW
GLFW는 그들의 웹페지의 다운로드 페이지에서 얻어질 수 있다. GLFW는 비쥬얼 스튜디오 2013/2015를 위한 이미 미리 컴파일된 바이너리와 헤더파일들을 가진다. 그러나 완전함을 위해서, 우리는 GLFW를 소스코드로부터 우리스스로 컴파일할 것이다. 그래서 소스 패키지를 다운받아보자.
Red Box
만약 당신이 pre-compiled binaries들을 사용한다면, 64bit version이 아닌 32 bit version을 다운받도록해라. 64 bit version은 보고에 의하면 대부분의 독자들에게 이상한 에러를 일으키고있다.
일단 소스패키지를 다운로드 했다면, 그것을 압축을 풀고 내용물을 열어보아라. 우리는 몇가지 것들에만 관심이 있다.
- 컴파일로부터 나온 결과 라이브러리
- include 폴더
소스코드로부터 라이브러리를 컴파일하는 것은 결과로나온 라이브러리가 완벽하게 너의 CPU/OS에 최적화하여 만들어진다는 것을 보증한다. 멋진 pre-compiled 바이너리가 항상 제공하지 않는 (가끔씩, pre-compiled binaries는 너의 시스템에 이용가능하지 않을 수 있다.) open world에 소스코드를 제공하는데 있어서 문제점은 모든 사람이 그들의 프로그램을 개발하는데 있어서 같은 IDE를 사용하지 않는다는 것이다. 그것은 제공된 프로젝트/솔루션 파일들이 다른 사람들의 IDE와 호환가능하지 않을 수 있다는 것이다. 그래서 사람들은 그 때 주어진 .C/.CPP 그리고 .h/.hpp 파일들로 그들 자신만의 프로젝트나 솔루션을 구축해야만 한다. 그리고 이것은 번거로운 작업이다. 그러한 이유 때문에 CMake라고 불리는 도구가 있다.
CMake (생략)
Compilation
build 폴더에서 GLFW.sin이라는 파일이 있다. 우리는 그것을 비쥬얼 스튜디오로 열 수 있다. CMake는 적절한 환경 설정을 이미 포함하는 프로젝트 파일을 생성했기 때문에, 우리는 Build solution 버튼을 누를 수 있고, 결과로 나온 컴파일된 라이브러리가 src/Debug에서 glfw3.lib이라는 이름을 가진 것이 찾아질 수 있다.
일단 라이브러리가 생성되었다면, 우리는 IDE가 그 라이브러리와 include 파일들을 어디에서 찾을지를 알게끔 해줘야 한다. 이것을 하는데 두 가지 방법이 있다. (생략)
일단 요구된 파일들이 너의 선택에 따른 위치에 저장되었다면, 우리는 GLFW로 우리의 첫 번째 OpenGL 프로젝트를 만드는 것을 시작할 수 있다.
Our first project (생략)
Linking (생략)
OpenGL library on Windows
만약 당신이 윈도우를 사용한다면, OpenGL 라이브러리 opengl32.lib은 기본적으로 당신이 비쥬얼 스튜디오를 설치했을 때 같이 설치된 Microsoft SDK와 함께 있다. 이 튜토리얼은 VS compiler를 사용하고 윈도우를 기반으로하기 때문에, 우리는 opengl32.lib을 링커 세팅에 추가한다.
OpenGL library on Linux (생략)
GLAD
우리는 아직 여전히 끝난 것이 아니다. 우리가 여전히 해야할 것이 남아있기 때문이다. OpenGL은 표준이자 명세이기 때문에, 특정한 그래픽카드가 지원하는 드라이버에 대한 명세를 구현하는 것은 드라이버 제조사에 달려있다. OpenGL 드라이버들의 많은 다른 버전이 있기 때문에, 대부분의 함수들의 위치는 compile-time에서는 알려지지 않는다. 그리고 run-time에 query되어질 필요가 있다. 그러고나서 개발자가 나중에 사용하기 위해 함수 포인터에서 그것들을 저장하는 함수들의 위치를 가져오는것은 개발자의 일이다. 그러한 위치를 불러오는것은 OS마다 특수하다. 윈도우에서는 다음과 같다.
// define the function's prototype
typedef void (*GL_GENBUFFERS) (GLsizei, GLuint*);
// find the function and assign it to a function pointer
GL_GENBUFFERS glGenBuffers = (GL_GENBUFFERS)wglGetProcAddress("glGenBuffers");
// function can now be called as normal
unsigned int buffer;
glGenBuffers(1, &buffer);
너도 보듯이, 코드가 복잡해 보인다. 그리고 각각의 함수를 위해 이것을 하는 것은 번거로운 과정이다. 고맙게도 이 목적을 위한 라이브러리가 있다. GLAD가 인기있고 최신의 라이브러리이다.
Setting up GLAD
GLAD는 우리가 말했던 모든 번거로운 일들을 다뤄주는 오픈소스 라이브러리이다. GLAD는 대부분의 흔한 오픈소스 라이브러리와 다소 다른 환경 설정을 가진다. GLAD는 웹서비스를 사용한다. 거기에서 우리는 우리가 정의하고자 하는 OpenGL의 어떤 버전이 어떤건지 말할 수 있고 그 버전에 따라서 관련된 OpenGL 함수들을 모두 가져올 수 있다.
웹서비스로 가서, 언어를 C++로 설정해라. API 섹션에서는 적어도 3.3 버전의 OpenGL 버전을 선택해라 (튜토리얼에서 사용할 것이 3.3버전이다. 더 높은 버전도 또한 괜찮다.) 또한 profile을 Core를 설정해라 그러면 Generate a loader option이 체크되어 있을 것이다. extensions들을 무시하고 Generate를 클릭하면 결과로 나오는 라이브러리 파일들이 만들어진다.
GLAD는 지금까지 너에게 두 개의 include 폴더와 하나의 glad.c 파일을 포함하는 zip file을 제공할 것이다. 두 개의 include 폴더들 (glad and KHR) 복사하여 너의 include 폴더에 복사해라 (또는 이러한 폴더를 가리키는 extra item을 추가해라), 그리고 glad.c 파일을 너의 프로젝트에 추가해라.
이전 단계 후에, 너는 너의 파일 위에 있는 다음 include directory를 추가할 수 있어야만 한다.
#include <glad/glad.h>
컴파일 버튼을 누르면 어떠한 에러도 일어나서는 안된다. 이 지점에서 우리는 다음 단계로 넘어간다. 거기에서 우리는 OpenGL context를 설정하고 window를 만들기 위해 어떻게 우리가 실제로 GLFW와 GLAD를 사용할지를 이야기할 것이다. 모든 너의 include와 library 폴더가 옳은지를 확인하고 링커 설정에 있는 라이브러리 이름들도 맞는지를 확인해라.
댓글 없음:
댓글 쓰기