OpenGL_01, To Create a Window

김경주·2024년 2월 1일

OpenGL

목록 보기
2/10

제일 먼저 필요한 것은 OpenGL context 생성과 창 생성

  • 위의 작업들은 OS마다 다르며, OpenGL은 의도적으로 위 작업들로부터 그 자체를 추상화하려고 한다.
    • 이는 창 생성, context 정의, 사용자 입력 처리 전부 개인 스스로 처리해야만 한다.
    • 운좋게 위의 작업들을 위한 기능들을 제공하는 몇몇 라이브러리가 있다. 그 중 몇몇은 OpenGL에 특정되어 있다. 이런 라이브러리들은 모든 OS 특정 작업들을 하지 않도록 해주고 window와 OpenGL context를 제공
    • 대중적인 라이브러리들 - GLUT, SDL, SFML, GLFW.
      • 여기서 GLFW를 사용, 대부분 다른 라이브러리는 GLFW의 설정과 유사

GLFW

  • OpenGL을 대상으로 C언어로 쓰여진 라이브러리이다.
    • 스크린에 멋진 그래픽을 렌더링에 요구되는 가장 기본적인 필수 기능들을 제공
      • OpenGL context 생성, window 매개변수 정의와 사용자 입력 처리를 하게 해준다.

Building GLFW

https://www.glfw.org/download.html

CMake를 사용해서 프로젝트 관리

GLAD

  • OpenGL은 단순 설명서라고 했었다. 이는 특정 그래픽 카드가 지원하는 드라이버에 맞는 구현은 드라이버 제조사에 달려있다.
  • OpenGL 드라이버들의 다른 버전들이 많이 있기 때문에 그에 맞는 함수들 대부분의 위치는 컴파일 타임에 알지 못하며 런타임에 분기문이 필요.
  • 필요한 함수의 위치를 찾거나 그 함수들을 함수 포인터에 저장하는 것은 개발자의 업무.
  • 함수 위치들을 찾는 것은 OS마다 다르다.
    // Windows
    
    // 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를 사용하면 편하다.

GLAD는 복잡하고 힘든 일을 다루는 오픈 소스 라이브러리, 다른 일반적인 오픈 소스 라이브러리와 조금은 다른 환경설정을 가진다. GLAD에 OpenGL 버전에 맞는 기능들을 불러오고 정의하고 싶은 것들을 GLAD 웹 서비스에서 확인해서 사용

http://glad.dav1d.de/

위 사이트를 들어가서 체크

  • C++, version 3.3, Core → generate a loader → library files

#include <glad/glad.h>

설정 코드 참고

profile
Hello everyone

0개의 댓글