분류 전체보기
-
OpenGL 4.5 강좌 - (5) VAO, VBOOpenGL 2021. 1. 31. 18:57
지난 시간에는 화면을 단색으로 채우는 방법에 대해 알아봤습니다. 그런데 화면에 도형을 그리려면 어떻게 해야 할까요? 그걸 하려면 새로운 개념을 더 알아야 합니다. 2차원 도형이든 3차원 도형이든간에 컴퓨터가 그것을 그리려면 우선 어떤 형식으로 표현되어야겠죠? OpenGL에서는 모든 도형을 삼각형으로 쪼개서 표현합니다. 왜냐하면 어떤 도형이든 삼각형으로 쪼개서 근사할 수 있기 때문이죠. OpenGL에서는 모든 도형의 기본 단위인 이 삼각형을 Primitive (기초요소) 라고 부릅니다. 삼각형은 3개의 꼭짓점 (Vertex) 으로 나타낼 수 있습니다. 이 점 세개를 선으로 연결하고, 그 선 내부를 채우면 삼각형이 되는 것이죠. 각 꼭짓점은 여러 가지의 속성 (attribute)을 가질 수 있습니다. 예를 ..
-
OpenGL 4.5 강좌 - (4) Framebuffer, 더블 버퍼링, V-SyncOpenGL 2021. 1. 31. 15:53
잠깐 다시 디스플레이 얘기로 돌아갑시다. 디스플레이는 움직이는 영상을 어떻게 표현할까요? 결론부터 말하자면 고정된 이미지 (프레임, Frame) 를 재빠르게 바꿔치기하면 잔상 효과에 의해 우리 뇌가 움직이는 영상이라고 인식하게 되는 것입니다. 얼마나 빠르게 바꿔치기해야 할까요? 보통 1초에 적어도 30번 이상은 해야 움직인다고 인식한다고 합니다. 제 경험으로는 '부드럽게 움직인다' 정도의 인식이 되려면 적어도 1초에 60번은 프레임이 바뀌어야 하는 것 같습니다. 따라서 우리가 일반적으로 쓰는 디스플레이는 보통 1초에 60번 정도, 비싼 게이밍 모니터는 1초에 240번까지도 프레임이 바뀝니다. 우리는 이렇게 화면이 1초에 몇 번 바뀌는지의 수를 주사율(Refresh Rate) 이라고 부르고,..
-
OpenGL 4.5 강좌 - (3) 창 띄우기OpenGL 2021. 1. 31. 15:04
지금까지의 main.cpp는 glfw와 glad를 #include하는 것 말고는 텅 비었는데요, 이제 무언가를 하는 코드를 작성해 봅시다! 우선 glfw 라이브러리를 사용하기 전에 glfwInit()함수를 통해 초기화를 해주어야 합니다. 초기화에 성공했다면 GLFW_TRUE값을, 실패했다면 GLFW_FALSE (=0) 값을 리턴하므로 에러 체크도 해 줍니다. 메인 함수에 아래 코드를 추가해 줍시다. if (!glfwInit()) { std::cerr
-
OpenGL 4.5 강좌 - (2) 개발환경 셋팅하기OpenGL 2021. 1. 31. 02:04
그럼 이제 OpenGL 4.5 개발환경을 한번 셋팅해 보겠습니다. 이 부분이 사실 가장 어려운 부분입니다 ㅎㅎ 하지만 찬찬히 읽고 차근차근 따라오신다면 사서 고생하지 않으셔도 될 것입니다. 아, 참고로 맥은 OpenGL 4.5를 지원하지 않습니다. 왜냐고요? 애플은 OpenGL을 버리고 독자적인 그래픽 API인 "Metal"을 밀고 나가기로 결정했기 때문입니다. OpenGL의 서브셋인 OpenGL ES를 야메로 Metal로 번역하는 레이어도 존재하지만 여기서 다루지는 않겠습니다. 맥 사용자시라면 '어쩔 수 없이' 리눅스 또는 윈도우 가상머신을 사용해서 진행합시다. 개발환경 셋팅하기 1. 우선 CMake 최신 버전을 설치해 줍니다. 인터넷에 검색하면 훌륭한 설명들이 많으니 CMake에 대해서..
-
OpenGL 4.5 강좌 - (1) OpenGL 소개: C언어로 화면에 그림 그리기OpenGL 2021. 1. 31. 01:26
이 튜토리얼은 C언어를 이미 배우고, C++의 기초를 아시는 분들께 권장드립니다. 그래픽스의 가장 기초부터 차근차근 진행할 예정이니, 입문자들에게 가장 적합합니다. 여러분이 이 튜토리얼을 보고 계시는 이유는 아마 '화면에 (문자가 아닌) 뭔가를 그리고 싶어서'일 겁니다. 제가 십수년 전 C언어를 처음 배웠을 때도 C언어 책에서 까만 콘솔 창에 키보드로 문자를 입력하는 프로그램을 만드는 법만 가르쳐 주었지, 그림을 그리는 방법에 대해서는 아무런 설명도 없어서 당혹스러웠던 기억이 있습니다. 정작 제가 만들고 싶었던 것은 화려한 그림을 그려주는 프로그램이었는데 말이죠. 그럼 도대체 화면에 그림을 그리는 방법은 무엇일까요? 우선 화면의 작동 원리에 대해서 잠깐 알아봅시다. 지금 여러분 눈앞에 있는 화면(디스플레..