반응형 [C++로 배우는 게임 엔진 개발] Day 16: 2D 조명과 그림자 효과 2D 조명과 그림자 효과오늘은 OpenGL과 GLSL을 사용하여 2D 조명과 그림자 효과를 구현하는 방법을 학습하겠습니다. 이를 통해 게임 그래픽을 더욱 현실감 있게 만들 수 있습니다.1. 조명 효과의 개요조명 효과는 물체의 밝기와 색상을 변경하여 현실적인 느낌을 주는 그래픽 기법입니다. 2D 게임에서는 주로 점광원(Point Light)을 사용하여 조명 효과를 구현합니다.2. GLSL 쉐이더 수정조명 효과를 구현하기 위해 기존의 버텍스 쉐이더와 프래그먼트 쉐이더를 수정하겠습니다. 버텍스 쉐이더shaders/vertex_shader.glsl 파일을 다음과 같이 수정합니다.#version 330 corelayout(location = 0) in vec3 aPos;layout(location = 1) in .. 2024. 8. 1. [C++로 배우는 게임 엔진 개발] Day 17: 입자 시스템 구현 입자 시스템 구현오늘은 OpenGL과 GLSL을 사용하여 입자 시스템을 구현하고, 다양한 시각 효과를 만드는 방법을 학습하겠습니다. 입자 시스템은 폭발, 연기, 불꽃, 눈, 비 등 다양한 시각 효과를 표현하는 데 사용됩니다.1. 입자 시스템의 개요입자 시스템은 작은 입자들로 구성되어 특정한 규칙에 따라 움직이는 시스템입니다. 각 입자는 위치, 속도, 색상 등의 속성을 가지며, 시간에 따라 변화합니다.2. 입자 클래스 설계먼저 입자를 관리하기 위한 Particle 클래스를 설계합니다. 헤더 파일 작성include/Particle.h 파일을 생성하고 다음과 같이 작성합니다.#ifndef PARTICLE_H#define PARTICLE_H#include struct Particle { glm::vec3 .. 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 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. [C++ 게임 개발 시리즈] Day 22: 3D 그래픽 기초 3D 그래픽 기초3D 그래픽은 2D 그래픽보다 복잡하지만, 게임을 더욱 몰입감 있게 만들어 줍니다. 오늘은 3D 그래픽의 기본 개념과 함께 OpenGL을 사용하여 간단한 3D 장면을 렌더링하는 방법을 학습하겠습니다.3D 그래픽의 기본 요소3D 그래픽은 3차원 공간에서 객체를 표현하고, 이를 2차원 화면에 렌더링하는 과정입니다. 3D 그래픽의 주요 요소는 다음과 같습니다:좌표 시스템(Coordinate System): 3D 공간에서 객체의 위치를 나타내는 방법입니다.카메라(Camera): 3D 장면을 관찰하는 가상 카메라입니다.모델(Model): 3D 객체의 형태와 구조를 정의하는 데이터입니다.광원(Lighting): 3D 장면에 조명을 추가하여 현실감을 더합니다.쉐이더(Shader): 그래픽 처리 파이프.. 2024. 8. 1. 이전 1 다음 반응형