본문 바로가기
반응형
[C++로 배우는 게임 엔진 개발] Day 18: 간단한 UI 시스템 구현 간단한 UI 시스템 구현오늘은 OpenGL과 SDL_ttf를 사용하여 간단한 UI 시스템을 구현하고, 게임 내에서 텍스트와 버튼 같은 UI 요소를 만드는 방법을 학습하겠습니다.1. SDL_ttf 설치 및 설정먼저 SDL_ttf 라이브러리를 설치하고 프로젝트에 설정합니다. CMakeLists.txt 수정CMakeLists.txt 파일에 SDL_ttf 라이브러리를 추가합니다.cmake_minimum_required(VERSION 3.10)# 프로젝트 이름과 버전 설정project(GameEngine VERSION 1.0)# C++ 표준 설정set(CMAKE_CXX_STANDARD 17)set(CMAKE_CXX_STANDARD_REQUIRED True)# 헤더 파일 디렉토리 포함include_directori.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 20: 리소스 관리 시스템 구현 리소스 관리 시스템 구현오늘은 게임 엔진에서 사용할 리소스(텍스처, 사운드, 폰트 등)를 효율적으로 관리하기 위한 리소스 관리 시스템을 구현하겠습니다. 리소스 관리 시스템은 리소스의 로드, 캐싱, 해제를 담당하여 메모리 사용을 최적화하고 성능을 향상시킵니다.1. 리소스 관리 시스템 설계리소스 관리 시스템을 설계하고, 텍스처를 관리하는 TextureManager 클래스를 구현합니다. 헤더 파일 작성include/TextureManager.h 파일을 생성하고 다음과 같이 작성합니다.#ifndef TEXTUREMANAGER_H#define TEXTUREMANAGER_H#include #include #include #include class TextureManager {public: static Text.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 22: 3D 그래픽스 기초 (OpenGL/DirectX) 3D 그래픽스 기초 (OpenGL/DirectX)오늘은 3D 그래픽스의 기초를 이해하고, OpenGL을 사용하여 간단한 3D 모델을 렌더링하는 방법을 학습하겠습니다. 3D 그래픽스는 2D 그래픽스보다 복잡하지만, 게임 개발에서 중요한 요소입니다.1. OpenGL 3D 기초 설정먼저, OpenGL을 사용하여 3D 그래픽스를 렌더링하기 위한 기초 설정을 합니다. 헤더 파일 작성include/Graphics3D.h 파일을 생성하고 다음과 같이 작성합니다.#ifndef GRAPHICS3D_H#define GRAPHICS3D_H#include #include #include class Graphics3D {public: Graphics3D(); ~Graphics3D(); bool Initializ.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 23: 3D 모델 로딩 및 렌더링 3D 모델 로딩 및 렌더링오늘은 실제 3D 모델을 로딩하고, 게임 엔진에서 렌더링하는 방법을 학습하겠습니다. 이를 위해 Assimp 라이브러리를 사용하여 모델 파일을 로드하고, OpenGL을 사용하여 렌더링합니다.1. Assimp 설치 및 설정먼저 Assimp 라이브러리를 설치하고 프로젝트에 설정합니다. Assimp 다운로드 및 설치Assimp 공식 GitHub 페이지에서 Assimp 소스 코드를 다운로드합니다.다운로드한 소스 코드를 프로젝트 디렉토리로 이동합니다.Assimp 소스 코드를 빌드하고 설치합니다.CMakeLists.txt 수정CMakeLists.txt 파일에 Assimp 라이브러리를 추가합니다.cmake_minimum_required(VERSION 3.10)# 프로젝트 이름과 버전 설정pro.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 28: 인스턴싱과 최적화 기법 인스턴싱과 최적화 기법오늘은 인스턴싱과 최적화 기법을 통해 게임 성능을 향상시키는 방법을 학습하겠습니다. 인스턴싱은 동일한 메쉬를 여러 개 렌더링할 때 사용되는 기법으로, 그래픽 카드의 성능을 효율적으로 활용할 수 있게 해줍니다.1. 인스턴싱 기법인스턴싱을 구현하기 위해 동일한 메쉬를 여러 위치에 배치하는 예제를 만들어 보겠습니다. 헤더 파일 작성include/Instancing.h 파일을 생성하고 다음과 같이 작성합니다.#ifndef INSTANCING_H#define INSTANCING_H#include #include #include class Instancing {public: Instancing(); ~Instancing(); bool Initialize(); void Re.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 5: 기본 렌더링 파이프라인 이해 기본 렌더링 파이프라인 이해오늘은 그래픽스를 화면에 렌더링하는 기본 방법을 학습하고, 간단한 도형을 그리는 방법을 배워보겠습니다. 렌더링 파이프라인은 그래픽스를 화면에 그리기 위한 일련의 단계를 의미합니다.1. 기본 렌더링 파이프라인기본 렌더링 파이프라인은 다음과 같은 단계로 구성됩니다:모델링 변환 (Model Transformation): 객체의 위치, 크기, 회전을 설정합니다.뷰 변환 (View Transformation): 카메라의 위치와 방향을 설정합니다.투영 변환 (Projection Transformation): 3D 좌표를 2D 화면에 투영합니다.뷰포트 변환 (Viewport Transformation): 투영된 좌표를 실제 화면 좌표로 변환합니다.2. SDL2를 사용한 기본 렌더링SDL2를.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 8: 2D 그래픽스 기초 (SDL2) 2D 그래픽스 기초오늘은 SDL2를 사용하여 2D 그래픽스를 렌더링하는 방법을 학습하겠습니다. 스프라이트를 렌더링하고, 화면에 이미지를 그리는 기초를 배워보겠습니다.1. SDL2 이미지 로딩SDL2는 SDL_image 라이브러리를 사용하여 다양한 형식의 이미지를 로드할 수 있습니다. 먼저 SDL_image 라이브러리를 설치하고 프로젝트에 추가합니다. CMakeLists.txt 수정CMakeLists.txt 파일에 SDL_image 라이브러리를 추가합니다.cmake_minimum_required(VERSION 3.10)# 프로젝트 이름과 버전 설정project(GameEngine VERSION 1.0)# C++ 표준 설정set(CMAKE_CXX_STANDARD 17)set(CMAKE_CXX_STANDARD.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 11: 타일맵 렌더링 타일맵 렌더링오늘은 SDL2를 사용하여 타일맵을 렌더링하는 방법을 학습하겠습니다. 타일맵은 게임 맵을 작은 타일들로 구성하여 효율적으로 렌더링하는 방법입니다. 이를 통해 큰 맵을 쉽게 관리하고 렌더링할 수 있습니다.1. 타일맵의 개요타일맵은 작은 타일들을 배열하여 게임 맵을 구성합니다. 각 타일은 일정한 크기의 사각형으로, 타일맵 배열의 각 요소는 타일의 종류를 나타냅니다.2. 타일맵 클래스 설계타일맵을 관리하기 위해 TileMap 클래스를 설계합니다. 이 클래스는 타일맵 배열을 저장하고, 타일맵을 렌더링하는 역할을 합니다. 헤더 파일 작성include/TileMap.h 파일을 생성하고 다음과 같이 작성합니다.#ifndef TILEMAP_H#define TILEMAP_H#include #include c.. 2024. 8. 1.
[C++로 배우는 게임 엔진 개발] Day 15: 쉐이더 프로그래밍 기초 (GLSL) 쉐이더 프로그래밍 기초 (GLSL)오늘은 OpenGL 쉐이더 언어(GLSL)를 사용하여 기본적인 쉐이더를 작성하고, 다양한 그래픽 효과를 구현하는 방법을 학습하겠습니다. 쉐이더는 GPU에서 실행되는 작은 프로그램으로, 그래픽스 파이프라인에서 중요한 역할을 합니다.1. GLSL 쉐이더의 개요버텍스 쉐이더(Vertex Shader): 각 정점의 위치와 속성을 처리합니다.프래그먼트 쉐이더(Fragment Shader): 각 프래그먼트(픽셀)의 색상을 계산합니다.2. OpenGL 초기화먼저 OpenGL 컨텍스트를 초기화하고, GLSL 쉐이더를 로드하고 컴파일하는 방법을 구현하겠습니다. 헤더 파일 수정include/GameEngine.h 파일에 OpenGL 초기화와 쉐이더 로딩을 위한 함수를 추가합니다.#ifnd.. 2024. 8. 1.
[C++ 게임 개발 시리즈] Day 23: 3D 모델링과 텍스처링 3D 모델링과 텍스처링3D 모델링과 텍스처링은 게임에서 현실감 있는 그래픽을 표현하기 위해 필수적인 기술입니다. 3D 모델링은 객체의 형태를 정의하고, 텍스처링은 객체의 표면에 이미지를 입히는 작업입니다. 오늘은 간단한 3D 모델을 로드하고, 텍스처를 적용하는 방법을 학습하겠습니다.3D 모델 파일 형식3D 모델 파일 형식은 다양한 종류가 있습니다. 오늘은 간단하고 널리 사용되는 Wavefront OBJ 파일 형식을 사용하겠습니다. OBJ 파일은 3D 모델의 정점, 면, 텍스처 좌표 등을 텍스트 형식으로 저장합니다.OBJ 파일 로딩OBJ 파일을 로드하기 위해 간단한 로더를 작성합니다. 이 로더는 정점, 텍스처 좌표, 면 정보를 읽어들여 OpenGL에서 사용할 수 있는 형태로 변환합니다.#include #i.. 2024. 8. 1.
반응형