2024/04 13

[OpenGL] Delayed execution 지연실행와 glFlush, glFinish

OpenGl 함수는 효율성을 높이기 위해 명령어 큐에 기록하고 바로 retrun한다. OpenGL에서의 delayed execution은 일반적으로 OpenGL 명령이 실제로 그래픽 처리 장치인 GPU에 의해 처리될 때까지 실행이 지연되는 것을 의미합니다. OpenGL에서 그래픽 명령을 호출하면 이러한 명령들은 일반적으로 버퍼에 쌓이게 됩니다. 그러나 이들 명령이 실제로 그래픽 처리 장치인 GPU에 의해 실행되는 시점은 보장되지 않습니다. OpenGL은 이들 명령을 GPU에 보내고, GPU가 이들을 처리할 때까지 기다리지 않습니다. 따라서 OpenGL 명령이 실제로 실행되는 지점은 명령을 호출한 다음 프레임 버퍼를 사용하거나 명령의 결과를 읽어들일 때까지 알 수 없습니다. 이러한 delayed execu..

OpenGL 2024.04.02

[OpenGL] Double buffering와 glfwSwapBuffers

화면을 업데이트하다가 생기는 문제 때문에 하드웨어적인 해결처를 찾은 게 double buffering이다. 우선 프레임버퍼는 그래픽스 카드상에 있는 특별한 2D Array를 의미한다. 쉐도우 프레임을 이용하여 2D Array인 프레임 버퍼 에다 어떤 내용을 업데이트한다. 그러면 그래픽 카드에 하드로 구현되어 있는 디스플레이 프로세서가 이 2d Array를 계속 무한 반복해서 모니터에 그대로 보여준다. 디스플레이 프로세서는 1초에 60~ 120번 정도에 굉장히 빠른 속도로 화면을 업데이트하고 있는 게 문제가 될 수 있다. Partial Update Problem이라는 문제로 어떤 경우는 처음에 OpenGL 프로그램에서 쉐이드 프로그램이 프레임 버퍼에 그림을 다 그려놓은 상황에서는 문제가 없다. 하지만 Op..

OpenGL 2024.04.02

[OpenGL] GLAD 설치 및 사용법

GLAD는 라이브러리를 인스톨 하는것이아닌 필요한 소스 코드를 생성해서 내 프로젝트에 가져가는 개념이다. Url : https://glad.dav1d.de/ https://glad.dav1d.de/ Extensions... glad.dav1d.de 생성 원하는 버전 선택 후 생성 include 복사 다운받은 glad폴더의 include폴더안 glad, KHR폴더를 C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\xx.yy.zzzzz\include 안에 복사해준다. glad.c 사용 glad.c는 직접 소스코드에 포함시킨다. #include #include #pragma comment(lib, "glew32.lib") #pragm..

OpenGL 2024.04.01