[Graphics] GameObject, Transform, Component
·
게임개발/Graphics
[결과물 미리보기] 회전하며 날아가는 햄스터 ^^ *현재 Game.cpp를 여러 파일로 분리해놓은 상태 #pragma once#include "pch.h"/* GameObject * : 3D 게임 오브젝트를 구성하는 기본 클래스 * 정점/인덱스 데이터, 버퍼, 셰이더, 텍스처, 렌더링 상태 등을 관리하고 * Update/Render 함수를 통해 매 프레임 업데이트 및 렌더링을 수행한다. */class GameObject{public: GameObject(ComPtr device, ComPtr deviceContext); ~GameObject();public: void Update(); void Render(std::shared_ptr pipeline);private: ComPtr _device;..
[Graphics] SimpleMath 실습
·
게임개발/Graphics
Matrix를 이용하여 실시간 위치 변경 영상 // Game.hprivate: /* Constant Buffer */ TransformData _transformData; ComPtr _constantBuffer; /* SRT */ Vec3 _localPosition = { 0.f, 0.f, 0.f }; Vec3 _localRotation = { 0.f, 0.f, 0.f }; Vec3 _localScale = { 1.f, 1.f, 1.f };// Game.cppvoid Game::Update(){ _localPosition.x += 0.001f; // Create SRT Matrix scaleMatrix = Matrix::CreateScale(_localScale / 3); Matrix rotatio..
[Graphics] SimpleMath
·
게임개발/Graphics
프로젝트 세팅위 파일들을 그래픽스 파일 경로로 가져온다. // Types.h#pragma once#include #include "DirectXMath.h"#include "SimpleMath.h"using int8 = __int8;using int16 = __int16;using int32 = __int32;using int64 = __int64;using uint8 = unsigned __int8;using uint16 = unsigned __int16;using uint32 = unsigned __int32;using uint64 = unsigned __int64;/* DirectX Math, XMFLOATN = N개의 float로 구성 *///using Vec2 = DirectX::XMFLOAT2..
[Graphics] 행렬
·
게임개발/Graphics
이번에는 pdf로 준비했습니다. 공부한 내용 끄적인 정도라 보기 어려우실 수 있습니다
[Graphics] RasterizerState, SampleState, BlendState
·
게임개발/Graphics
// Game.h private: /* RasterizerState 생성 - 삼각형을 화면에 어떻게 그릴지 설정 (채우기 모드, 컬링, 앞면 방향 등) */ void CreateRasterizerState(); /* Sampler State 생성 - 픽셀 셰이더에서 텍스처 좌표(UV)를 어떻게 샘플링할지 설정 (보간 방식, 경계 처리 방식 등) */ void CreateSamplerState(); /* Blend State 생성 - 픽셀이 렌더 타겟에 출력될 때, 기존 픽셀과 새 픽셀을 어떻게 섞을지 설정 (투명도, 알파 블렌딩 등 처리 방식) */ void CreateBlendState(); private: /* Rasterizer State ..
[Graphics] Constant Buffer
·
게임개발/Graphics
Constant Buffer를 이용해 행렬정보(지금은 offset)를 매 프레임마다 한번에 업데이트함 Constant Buffer: GPU 셰이더에 자주 바뀌는 데이터를 빠르고 효율적으로 전달하기 위한 구조체 기반 메모리 블록. [Constant Buffer 사용 X]deviceContext->VSSetShaderConstantF(0, world.m, 4); // world matrixdeviceContext->VSSetShaderConstantF(4, view.m, 4); // view matrixdeviceContext->VSSetShaderConstantF(8, projection.m, 4); // projection matrix: 매 프레임마다 셰이더에 개별 데이터(행렬, fl..
[Graphics] 텍스처와 UV
·
게임개발/Graphics
# Index Buffer 생성이제 Index Buffer를 만들어 보겠습니다. Index Buffer는 서로 정점이 겹치는 여러개의 삼각형을 그릴 때 유용합니다.Index Buffer : 같은 정점을 가진 삼각형이 여러개 존재한다면, 중복된 정점을 재사용 -> 메모리 절약, GPU 처리 속도 향상더보기 정점 버퍼와 인덱스 버퍼의 차이?: 정점 버퍼(Vertex Buffer)는 정점의 위치, 색상, 텍스처 좌표 같은 데이터를 GPU에 전달하는 버퍼이고,인덱스 버퍼(Index Buffer)는 정점 버퍼에 있는 정점들을 어떤 순서로 조합해 도형(삼각형 등)을 만들지 지정하고, 이를 GPU에 전달하는 버퍼입니다.인덱스 버퍼를 사용하면 같은 정점을 여러 도형에서 재사용할 수 있어서, 메모리를 절약할 수 있고, ..
[Graphics] 삼각형 띄우기
·
게임개발/Graphics
셰이더(Shader)는 게임 속 물체의 색, 모양, 빛나는 방식을 GPU가 계산하도록 도와주는 코드 [전반적인 흐름]// 1. 정점 데이터 생성CreateGeometry(); // → _vertices를 정의하고 VertexBuffer에 업로드// 2. 셰이더 및 구조 정의CreateVertexShader(); // → VertexShader 컴파일 및 등록CreatePixelShader(); // → PixelShader 컴파일 및 등록CreateInputLayout(); // → 정점 구조 설명// 3. GPU에 렌더링 명령Render() { IASetVertexBuffers(); // 정점 버퍼 바인딩 IASetInputLayout(); ..
[Graphics] 초기화
·
게임개발/Graphics
Game.h#pragma onceclass Game{public: Game(); ~Game();public: void Init(HWND hwnd); void Update(); void Render();private: void RenderBegin(); void RenderEnd();private: /* 결과물을 그릴 백 버퍼 생성 */ void CreateDeviceAndSwapChain(); /* 백 퍼버에 대한 포인터, GPU가 목표 버퍼에 접근할 수 있도록 해주는 랜더타겟 뷰 객체 생성 */ void CreateRenderTargetView(); void SetViewport();private: HWND _hwnd; uint32 _width = 0; uint32 _height = 0; float _..