
“그래픽스 프로그래밍 배우고 싶은데 뭐부터 봐야 하나요?”라는 질문에 전 세계 개발자들이 십 년 넘게 한목소리로 추천해온 사이트가 있어요. 바로 LearnOpenGL(learnopengl.com)이에요. 개발자 요이 드 브리스(Joey de Vries)가 만든 무료 튜토리얼 사이트인데, 화면에 삼각형 하나 띄우는 것부터 시작해서 물리 기반 렌더링(PBR)까지, 현대 그래픽스의 핵심을 처음부터 끝까지 코드와 함께 가르쳐주거든요. 그래픽스 입문서의 사실상 표준이라고 불러도 과언이 아닌 자료예요.
'Modern' OpenGL이 뭐냐면요
OpenGL은 GPU에게 “이걸 그려라”라고 명령하는 그래픽스 API예요. 그런데 옛날 방식과 현대 방식이 완전히 달라요. 옛날에는 glBegin, glVertex 같은 함수로 점 하나하나를 CPU에서 지정해주는 '고정 파이프라인' 방식이었는데, 이건 GPU의 성능을 제대로 못 쓰는 낡은 방법이거든요. 현대 방식은 정점 데이터를 버퍼에 담아 GPU 메모리로 통째로 보내고, GPU에서 직접 실행되는 작은 프로그램인 '셰이더(shader)'로 그리는 방식이에요. LearnOpenGL은 처음부터 이 현대 방식, 즉 OpenGL 3.3 코어 프로파일만 가르쳐요. 인터넷에 굴러다니는 낡은 자료로 배우다가 나중에 처음부터 다시 배우는 비극을 피할 수 있다는 게 이 사이트의 첫 번째 미덕이에요.
커리큘럼이 정말 알차거든요
구성을 보면 왜 정석이라 불리는지 알 수 있어요. 'Getting Started'에서는 창 띄우기, 삼각형 그리기, 셰이더 작성, 텍스처 입히기, 행렬 변환, 카메라 만들기까지 기초를 다져요. 이어지는 'Lighting'에서는 퐁(Phong) 조명 모델로 빛과 재질을 표현하는 법을 배우고요. 'Model Loading'에서는 Assimp 라이브러리로 3D 모델 파일을 불러와 내가 만든 렌더러에 직접 띄워봐요. 여기까지만 해도 “내 손으로 만든 3D 뷰어”가 남아요. 뒤로 가면 프레임버퍼, 큐브맵, 인스턴싱 같은 고급 기능을 다루고, 그림자 매핑, 노멀 매핑, HDR, 블룸, 디퍼드 셰이딩, SSAO처럼 게임 그래픽 옵션 메뉴에서 보던 바로 그 기술들을 하나씩 직접 구현해요. 마지막의 PBR 챕터는 요즘 게임과 3D 툴의 표준이 된 물리 기반 렌더링 이론을 수식부터 코드까지 풀어주는데, 이 수준의 자료를 무료로 볼 수 있는 곳은 정말 드물어요. 'In Practice' 챕터에서는 배운 걸 총동원해서 2D 게임 '브레이크아웃'을 처음부터 끝까지 만들어보고요. 모든 챕터에 C++ 전체 소스 코드와 풍부한 그림 자료가 딸려 있고, 웹에서는 전부 무료예요. 종이책과 PDF로도 판매하지만 내용은 같아요.
Vulkan 시대에 왜 아직 OpenGL이냐면요
요즘 그래픽스 업계의 최전선은 Vulkan, DirectX 12, Metal, WebGPU 같은 저수준 API로 넘어갔어요. 그럼 OpenGL을 배우는 게 시간 낭비 아니냐고요? 오히려 반대예요. 렌더링 파이프라인이 어떻게 흘러가는지, 셰이더가 뭘 하는지, 변환 행렬과 조명 모델이 어떻게 동작하는지 같은 개념은 어떤 API를 쓰든 똑같거든요. Vulkan은 삼각형 하나 띄우는 데 코드가 천 줄 가까이 필요할 만큼 진입 장벽이 높아서, 개념을 모르는 상태로 시작하면 API 보일러플레이트와 개념 학습을 동시에 감당해야 해요. OpenGL로 개념을 익힌 다음에 넘어가는 게 훨씬 빠른 길이라는 게 업계의 중론이에요.
한국 개발자에게는요
게임 클라이언트 개발을 꿈꾸는 분에게는 말할 것도 없고, 유니티나 언리얼을 쓰는 분에게도 엔진의 셰이더와 머티리얼이 내부에서 뭘 하는지 이해하는 데 이만한 자료가 없어요. 웹 프론트엔드 분들도 Three.js나 WebGL, 요즘 떠오르는 WebGPU를 깊게 파고 싶다면 여기서 배우는 개념이 그대로 이어지고요. 영어 자료지만 문장이 쉽고 그림이 많아서 부담이 적은 편이에요. 하루에 챕터 하나씩, 두세 달 잡고 완주하면 그래픽스를 보는 시야가 완전히 달라질 거예요.
정리하면, 삼각형 하나에서 PBR까지 그래픽스의 정도를 무료로 걸을 수 있는 최고의 코스예요. 여러분은 그래픽스 공부를 어떻게 시작하셨나요? OpenGL로 개념부터 다지기와 바로 Vulkan/WebGPU로 직행하기, 어느 쪽이 맞다고 보세요?
🔗 출처: Hacker News