강의

멘토링

커뮤니티

로드맵 썸네일

그래픽스

작성자 프로필 이미지

김하은

OpenGL
glsl
fragment-shader

초급 대상

로드맵 참여중인 유저 프로필 사진
로드맵 참여중인 유저 프로필 사진

2명 참여중

조회수

85

로드맵 코스

제가 공부하려 만든것

컴퓨터 그래픽스의 세계에 오신 것을 환영합니다! OpenGL은 로우 레벨 그래픽스 API의 표준과도 같아서, 이를 배우면 Unity나 Unreal 같은 상용 엔진이 내부적으로 어떻게 작동하는지 깊이 이해할 수 있게 됩니다.

하지만 처음 시작할 때는 방대한 수학과 생소한 개념 때문에 길을 잃기 쉽습니다. 초심자부터 심화 단계까지 차근차근 밟아나갈 수 있는 체계적인 로드맵을 제안해 드립니다.


1단계: 준비 운동 (Prerequisites)

코드를 작성하기 전에 반드시 갖춰야 할 기초 체력입니다.

  • C++ 언어: OpenGL은 대부분 C++ 환경에서 학습합니다. 포인터, 클래스, 메모리 관리에 대한 이해가 필요합니다.

  • 선형대수학 (Linear Algebra): 그래픽스의 핵심입니다.

    • 벡터(Vector): 방향과 크기, 내적(Dot Product), 외적(Cross Product).

    • 행렬(Matrix): 이동, 회전, 크기 변환(Translation, Rotation, Scale).

  • 개발 환경 세팅:

    • IDE: Visual Studio 또는 CLion/VS Code.

    • 라이브러리: GLFW (창 생성 및 입력 처리), GLAD 또는 GLEW (OpenGL 함수 로더).

2단계: 삼각형 띄우기 (The Hello World)

그래픽스 프로그래밍에서 삼각형 하나를 화면에 띄우는 것은 일반 프로그래밍의 "Hello World"보다 훨씬 어렵지만, 가장 중요한 단계입니다.

  • 그래픽스 파이프라인 이해: 데이터가 GPU를 거쳐 화면의 픽셀이 되기까지의 과정.

  • VBO, VAO, EBO: 정점(Vertex) 데이터를 GPU 메모리에 보내고 관리하는 방법.

  • 쉐이더(Shaders - GLSL):

    • Vertex Shader: 정점의 위치를 결정.

    • Fragment Shader: 픽셀의 색상을 결정.

  • 목표: 검은 화면에 흰색(또는 컬러) 삼각형 하나를 띄우는 것.

3단계: 3D 공간으로의 확장

평면적인 삼각형을 넘어, 깊이가 있는 3D 세계를 구축합니다.

  • 텍스처(Textures): 이미지 파일을 불러와 도형에 입히는 방법 (UV 매핑).

  • 변환(Transformations): GLM 라이브러리를 사용하여 도형을 이동, 회전, 확대/축소하기.

  • 좌표계 (Coordinate Systems): 가장 헷갈리는 부분입니다.

    • Local Space $\rightarrow$ World Space $\rightarrow$ View Space (Camera) $\rightarrow$ Clip Space (Projection).

    • MVP 행렬 (Model, View, Projection)의 개념 확실히 잡기.

  • 카메라(Camera): 키보드/마우스로 3D 공간을 날아다니는 1인칭 카메라 구현.

4단계: 빛과 그림자 (Lighting)

3D 그래픽의 리얼리티는 '조명'에서 나옵니다.

  • 기본 조명 이론: 색상과 빛의 상호작용.

  • Phong Lighting Model: Ambient(주변광), Diffuse(확산광), Specular(반사광)의 이해.

  • 재질(Materials): 물체마다 빛에 반응하는 정도를 다르게 설정.

  • Light Maps: Diffuse Map과 Specular Map을 사용해 디테일한 질감 표현.

  • 광원의 종류: Directional Light(태양), Point Light(전구), Spot Light(손전등).

5단계: 중급 테크닉 (Intermediate)

이제 그럴싸한 3D 씬을 만들 수 있는 도구들을 배웁니다.

  • 모델 로딩 (Model Loading): 하드코딩된 큐브 대신, Blender 등에서 만든 복잡한 3D 모델 불러오기 (Assimp 라이브러리 활용).

  • 심도 테스트 & 스텐실 테스트: 물체의 앞뒤 관계를 판별하고 특정 영역만 그리기.

  • 블렌딩 (Blending): 투명한 유리창이나 풀잎 표현하기.

  • 프레임버퍼 (Framebuffers): 화면을 바로 출력하지 않고 텍스처로 저장하여 후처리(Post-processing) 효과 주기 (예: 흑백 필터, 흐림 효과).

6단계: 고급 조명과 효과 (Advanced Lighting)

사실적인 그래픽을 위한 고급 기술들입니다.

  • 그림자 매핑 (Shadow Mapping): 물체에 의해 생기는 그림자 구현.

  • 노멀 매핑 (Normal Mapping): 적은 폴리곤으로 표면의 굴곡을 디테일하게 표현.

  • HDR & Bloom: 눈부심 효과와 명암비 극대화.

  • Deferred Shading: 수백 개의 광원을 효율적으로 처리하는 렌더링 기법.

  • PBR (Physically Based Rendering): 물리 기반 렌더링. 현대 게임 엔진 그래픽의 표준입니다. (가장 어렵지만 결과물이 가장 좋습니다).

로드맵 상세보기

10개 코스

로드맵에 포함된 강의 썸네일
인프런
게임 개발자를 위한 3D 그래픽스, 쉐이더, OpenGL (9) - 스텐실, 커브&서피스, glTF
✅ 3D 그래픽스 프로그래밍: 기초부터 고급 응용까지
✅ GLSL Shading Language: 이론에서 실습까지 
✅ 9개의 시리즈 강의: (1) ~ (9)로 구성 : 완결 !

로드맵 코스 10