이 프로젝트는 OpenGL을 처음 배우는 분들을 위한 단계별 학습 예제들을 포함합니다.
다음 라이브러리들이 설치되어 있어야 합니다:
- GLFW - 윈도우 관리 및 입력 처리
- GLAD - OpenGL 함수 로더
- OpenGL - 그래픽 API
# vcpkg 설치 (아직 설치하지 않았다면)
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
.\bootstrap-vcpkg.bat
# 라이브러리 설치
.\vcpkg install glfw3:x64-windows
.\vcpkg install glad:x64-windows
# Visual Studio 통합
.\vcpkg integrate install- GLAD 웹사이트에 접속
- 다음 설정으로 생성:
- Language: C/C++
- Specification: OpenGL
- API version: 3.3 이상
- Profile: Core
- Generate a loader: 체크
- 생성된 파일을 다음과 같이 배치:
include/폴더에glad/및KHR/폴더 복사libs/glad/src/폴더에glad.c파일 복사
# 빌드 디렉토리 생성
mkdir build
cd build
# CMake 구성 (vcpkg 사용 시)
cmake .. -DCMAKE_TOOLCHAIN_FILE=[vcpkg 경로]/scripts/buildsystems/vcpkg.cmake
# 빌드
cmake --build . --config Release
# 실행
./01_window.exe
./02_triangle.exe
./03_shaders.exe
./04_textures.exe- CMake로 Visual Studio 솔루션 생성:
cmake .. -G "Visual Studio 17 2022" -DCMAKE_TOOLCHAIN_FILE=[vcpkg 경로]/scripts/buildsystems/vcpkg.cmake - 생성된
.sln파일을 Visual Studio로 열기 - 빌드 및 실행
- GLFW를 사용한 기본 윈도우 생성
- OpenGL 컨텍스트 초기화
- GLAD를 사용한 OpenGL 함수 로딩
- 기본적인 렌더링 루프
학습 내용:
- OpenGL 초기화 과정
- 윈도우 생성 및 관리
- 기본적인 이벤트 처리
- 기본적인 정점 데이터 생성
- Vertex Buffer Object (VBO) 사용법
- Vertex Array Object (VAO) 사용법
- 기본 셰이더 작성 및 컴파일
학습 내용:
- 정점 데이터와 버퍼 객체
- 셰이더 기초 (Vertex Shader, Fragment Shader)
- 그래픽스 파이프라인의 기본 개념
- 정점별 색상 데이터 전달
- Uniform 변수 사용법
- 시간에 따른 색상 변화
- 보간(Interpolation) 이해
학습 내용:
- 셰이더 간 데이터 전달
- Uniform 변수와 Attribute 변수의 차이
- 색상 보간과 시간 기반 애니메이션
- 텍스처 좌표 사용법
- Fragment Shader에서 패턴 생성
- 수학 함수를 활용한 그래픽 효과
- Element Buffer Object (EBO) 사용법
학습 내용:
- 텍스처 좌표와 UV 매핑
- 수학적 패턴 생성
- 인덱스 버퍼를 사용한 효율적인 렌더링
모든 예제에서 공통으로 사용되는 컨트롤:
- ESC - 프로그램 종료
-
"GLFW 초기화 실패"
- GLFW 라이브러리가 제대로 설치되지 않음
- vcpkg로 glfw3 재설치 시도
-
"GLAD 초기화 실패"
- GLAD 파일이 올바른 위치에 있는지 확인
- include 경로 설정 확인
-
"셰이더 컴파일 실패"
- 셰이더 소스 코드의 문법 오류
- OpenGL 버전 호환성 문제
-
검은 화면만 나타남
- 그래픽 카드 드라이버 업데이트
- OpenGL 버전 지원 확인
- 콘솔 출력을 주의 깊게 확인하세요
- 셰이더 컴파일 에러 메시지를 읽어보세요
- OpenGL 에러 체크 함수를 추가하여 디버깅하세요
이 예제들을 마스터한 후 다음과 같은 주제들을 학습하시기 바랍니다:
-
변환 (Transformations)
- 모델, 뷰, 투영 행렬
- GLM 라이브러리 사용
-
3D 렌더링
- 깊이 버퍼 (Z-buffer)
- 3D 모델 로딩
-
조명 (Lighting)
- Phong Lighting Model
- 여러 광원 처리
-
텍스처 매핑
- 이미지 파일 로딩
- 다중 텍스처 사용
-
고급 기법
- 프레임버퍼
- 셰이더 프로그래밍
- 후처리 효과
즐거운 OpenGL 학습 되세요! 🎨✨