<aside> 💡 #include <glad/glad.h> #include <GLFW/glfw3.h>

int main() { glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

return 0; }

</aside>

이제 GLFW를 구동시킬 수 있는지 확인해보자. cpp파일을 만들고 위 테스트 코드를 실행해보면 된다. 메인함수에서 우리는 GLFW를 glfwInit()으로 초기화한다. GLFW함수가 사용되기 전에 GLFW는 반드시 초기화 되어야만 한다. 그러고나서 glfwWindowHint()를 사용하여 GLFW를 설정한다.

<aside> 💡 glfwWindowHint(int target, int hint) 함수 target: 우리가 바꾸고자 하는 타겟과 옵션을 정한다. 타겟들은 'GLFW_'를 접두사로 가진다. hint: 우리가 설정하고자 하는 target의 값(또는 힌트)

example : glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);

</aside>

만약 프로그램 구동시 '정의되지 않은 참조에러'를 발생시킨다면, 성공적으로 GLFW 라이브러리를 link하지 않았다는 것을 의미한다.

이 튜토리얼에서 사용할 OpenGL은 3.3버전 이기에 GLFW에서 버전을 3.3으로 설정해줘야한다. 위 예제에서는 major와 minor 버전을 둘 다 3으로 설정하였다. 또한 우리는 GLFW에게 'core-profire'를 사용한다고 설정하였다. 이는 우리가 OpenGL 특징들의 더욱 작은 셋트에 접근할 것이라는걸 의미한다.(더이상 필요없는 backwards-compatible feature들 없이)

<aside> 💡 예제를 진행하기 위해 OpenGL3.3이상의 버전을 지원하는 시스템이나 하드웨어가 필요하다. 만약 지원하지 않는다면 프로그램은 충돌되고 정의되지 않은 행동을 보일 것이다. 장치에서 OpenGL Version을 알기 위해서는, 리눅스 머신에서 glxinfo를 호출하거나, 윈도우에서는 OpenGL Extension Viewer같은 유틸리티를 사용하면 된다. 만약 지원되는 버전이 낮다면 그래픽카드가 OpenGL3.3 이상의 버전을 지원하는지 체크하고 드라이브를 업데이트하라.

</aside>

다음으로, 우리는 윈도우 오브젝트를 만들어야 한다. 이 윈도우 오브젝트는 모든 윈도우 데이터를 가지고 있으며 대부분의 다른 GLFW 함수들이 필요로한다.

GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
if (window == NULL)
{
    std::cout << "Failed to create GLFW window" << std::endl;
    glfwTerminate();
    return -1;
}
glfwMakeContextCurrent(window);

GLAD

이전 챕터에서 GLAD가 OpenGL의 함수 포인터들을 관리한다고 언급했다. 그래서 OpenGL 함수를 호출하기 전에 GLAD를 초기화하려고 한다.

if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
    std::cout << "Failed to initialize GLAD" << std::endl;
    return -1;
}