Skip to content

rumyakun/OpenGL

Repository files navigation

OpenGL 연습 프로젝트

이 프로젝트는 OpenGL을 처음 배우는 분들을 위한 단계별 학습 예제들을 포함합니다.

📋 필요한 라이브러리

다음 라이브러리들이 설치되어 있어야 합니다:

  • GLFW - 윈도우 관리 및 입력 처리
  • GLAD - OpenGL 함수 로더
  • OpenGL - 그래픽 API

Windows 설치 방법 (vcpkg 사용)

# 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 수동 설치

  1. GLAD 웹사이트에 접속
  2. 다음 설정으로 생성:
    • Language: C/C++
    • Specification: OpenGL
    • API version: 3.3 이상
    • Profile: Core
    • Generate a loader: 체크
  3. 생성된 파일을 다음과 같이 배치:
    • include/ 폴더에 glad/KHR/ 폴더 복사
    • libs/glad/src/ 폴더에 glad.c 파일 복사

🚀 빌드 및 실행

CMake 사용

# 빌드 디렉토리 생성
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

Visual Studio 사용

  1. CMake로 Visual Studio 솔루션 생성:
    cmake .. -G "Visual Studio 17 2022" -DCMAKE_TOOLCHAIN_FILE=[vcpkg 경로]/scripts/buildsystems/vcpkg.cmake
  2. 생성된 .sln 파일을 Visual Studio로 열기
  3. 빌드 및 실행

📚 예제 설명

1. 기본 윈도우 (01_basic_window.cpp)

  • GLFW를 사용한 기본 윈도우 생성
  • OpenGL 컨텍스트 초기화
  • GLAD를 사용한 OpenGL 함수 로딩
  • 기본적인 렌더링 루프

학습 내용:

  • OpenGL 초기화 과정
  • 윈도우 생성 및 관리
  • 기본적인 이벤트 처리

2. 첫 번째 삼각형 (02_triangle.cpp)

  • 기본적인 정점 데이터 생성
  • Vertex Buffer Object (VBO) 사용법
  • Vertex Array Object (VAO) 사용법
  • 기본 셰이더 작성 및 컴파일

학습 내용:

  • 정점 데이터와 버퍼 객체
  • 셰이더 기초 (Vertex Shader, Fragment Shader)
  • 그래픽스 파이프라인의 기본 개념

3. 셰이더와 색상 (03_shaders.cpp)

  • 정점별 색상 데이터 전달
  • Uniform 변수 사용법
  • 시간에 따른 색상 변화
  • 보간(Interpolation) 이해

학습 내용:

  • 셰이더 간 데이터 전달
  • Uniform 변수와 Attribute 변수의 차이
  • 색상 보간과 시간 기반 애니메이션

4. 텍스처와 패턴 (04_textures.cpp)

  • 텍스처 좌표 사용법
  • Fragment Shader에서 패턴 생성
  • 수학 함수를 활용한 그래픽 효과
  • Element Buffer Object (EBO) 사용법

학습 내용:

  • 텍스처 좌표와 UV 매핑
  • 수학적 패턴 생성
  • 인덱스 버퍼를 사용한 효율적인 렌더링

🎮 컨트롤

모든 예제에서 공통으로 사용되는 컨트롤:

  • ESC - 프로그램 종료

🔧 문제 해결

일반적인 문제들

  1. "GLFW 초기화 실패"

    • GLFW 라이브러리가 제대로 설치되지 않음
    • vcpkg로 glfw3 재설치 시도
  2. "GLAD 초기화 실패"

    • GLAD 파일이 올바른 위치에 있는지 확인
    • include 경로 설정 확인
  3. "셰이더 컴파일 실패"

    • 셰이더 소스 코드의 문법 오류
    • OpenGL 버전 호환성 문제
  4. 검은 화면만 나타남

    • 그래픽 카드 드라이버 업데이트
    • OpenGL 버전 지원 확인

디버깅 팁

  • 콘솔 출력을 주의 깊게 확인하세요
  • 셰이더 컴파일 에러 메시지를 읽어보세요
  • OpenGL 에러 체크 함수를 추가하여 디버깅하세요

📖 다음 단계

이 예제들을 마스터한 후 다음과 같은 주제들을 학습하시기 바랍니다:

  1. 변환 (Transformations)

    • 모델, 뷰, 투영 행렬
    • GLM 라이브러리 사용
  2. 3D 렌더링

    • 깊이 버퍼 (Z-buffer)
    • 3D 모델 로딩
  3. 조명 (Lighting)

    • Phong Lighting Model
    • 여러 광원 처리
  4. 텍스처 매핑

    • 이미지 파일 로딩
    • 다중 텍스처 사용
  5. 고급 기법

    • 프레임버퍼
    • 셰이더 프로그래밍
    • 후처리 효과

📞 도움이 필요하시면

즐거운 OpenGL 학습 되세요! 🎨✨

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published