분류 전체보기 24

[3D 그래픽스] 렌더링 파이프라인

렌더링 파이프라인이란?주로 폴리곤을 2차원 형태로 바꾸고, 2차원 폴리곤 내부를 차지하는 픽셀의 색깔을 결정하여 3차원 최종 영상을 생성하는 과정을 말한다.주요 요소는 정점 처리(vertex processing), 래스터화(rasterization), 프래그먼트 처리(fragment processing), 출력 병합(output merging)이다. 로컬 스페이스 (Local Space)오브젝트 공간(Object Space)이라고도 부른다.오브젝트 공간을 이용하면 위치나 크기, 월드 내 다른 물체와의 관계 등을 고려하지 않고도 모델을 구성 할 수 있다.이는 아핀 변환과 선형 변환을 통해 월드 스페이스로 변환 할 수 있다. 이를 월드 변환(World Transform)이라고 한다.월드 스페이스 (World..

클라이언트 2025.06.09

[디자인 패턴] 프로토타입 : Protoype Pattern

프로토타입 패턴이란?생성 패턴 중 하나이다.원형이 되는 인스턴스를 사용하여 생성할 객체의 종류를 명시하고 만든 견본을 복사하여 새로운 객체를 생성하는 것이다. 프로토타입 사용이유보통 게임에서 몬스터들은 스포너를 통해서 생성이 된다.게임에 나오는 모든 몬스터를 스포너 클래스를 제작한다면 스포너 클래스 상속 구조가 몬스터 클래스 상속 구조를 따르게 된다.하지만 이 구조는 반복한다는 단점과 어떤 객체가 자기와 비슷한 객체를 스폰할 수도 있다는 단점이 있다.또한 몬스터의 종류가 많아질수록 스포너 클래스의 개수도 늘어나 관리가 복잡해진다. 이 때문에 프로토타입 패턴을 사용한다. 구현방법 1. Clone이를 해결하기 위해 상위 클래스에 Clone()이라는 함수를 추가한다.상속 받는 모든 클래스에 Clone 메서드가..

디자인 패턴 2025.06.08

[디자인 패턴] 컴포넌트 : Component Pattern

컴포넌트 패턴은 디커플링 패턴 중 하나이다. 디커플링이란?서로 다른 클래스나 시스템이 직접적으로 참조하거나 의존하지 않도록 만드는 설계 방식이다. 위의 사진은 상속 기반 설계의 문제점을 나타내는 사진이다.상속만으로 객체 구조를 구성할 때 발생하는 중복과 한계를 보여준다. 객체지향 초창기에는 코드 재사용을 위해 상속이 사용되었지만, 다양한 기능을 조합하거나 확장하는 데에는 오히려 번거롭고 경직된 구조였다. 이를 해결하기 위해 객체가 다양한 기능을 컴포넌트로서 포함할 수 있는 설계 방식이 등장하게 되었다. 컴포넌트 패턴이란?하나의 개체가 여러 기능이 분리된 컴포넌트를 추가할 수 있도록 하는 설계 패턴으로 각 기능은 독립적인 컴포넌트로 분리하여 서로 참조하지 않는다. 컴포넌트 패턴을 사용하는 이유한 개체가 여..

디자인 패턴 2025.06.06

Delta Time(델타 타임)

델타 타임이란?이전 프레임과 현재 프레임 사이에 걸린 시간을 의미한다.Delta Time = 현재 프레임 시간 - 이전 프레임 시간 게임에서 델타 타임을 사용하는 이유는 모든 기기에서 동일한 게임 속도를 유지하기 위함이다. 델타 타임을 사용하면 프레임 변동이 많은 환경에서도 일관성 있게 작동할 수 있다. QueryPerformanceCounter(&Time);BOOL QueryPerformanceCounter( LARGE_INTEGER *lpPerformanceCount);현재의 고해상도 타이머 값을 반환한다. 즉 현재까지 누적된 카운트 값을 가져온다. QueryPerformanceFrequency(&CpuTick);BOOL QueryPerformanceFrequency( LARGE_INTEGER *..

클라이언트 2025.06.01

[DirectX9] Direct3D 초기화

HAL (Hardware Abstraction Layer)Direct3D와 그래픽 장치 사이에 있는 중간 단계로, Direct3D가 직접 그래픽 장치를 제어하는 것이 불가능해 그래픽 카드마다 HAL로 특별한 작업을 수행하도록 하는 드라이버가 제공하는 하드웨어 특화 코드이다. COM 객체COM(Component Object Model)은 컴포넌트 객체 모델로 DirectX와 같은 API가 프로그래밍 언어에 독립적이고, 하위 호환성을 갖춘 형태로 설계될 수 있도록 도와주는 기반 기술이다.COM 객체는 자신의 메모리 관리를 스스로 수행하며 인터페이스라고 불린다. 멀티 샘플링 (안티 앨리어싱)픽셀 이미지를 표현할 때 거친 이미지를 부드럽게 만드는데 사용되는 기술이다.D3DMULTISAMPLE_NONE - 멀티 ..

클라이언트 2025.05.28

[DirectX9] 행렬(Matrix)함수

D3DXMATRIX mat;D3DXMatrixIdentity(&mat);단위 행렬 생성(초기화) - 항등 행렬을 제작하는 함수 D3DXMatrixScaling(&matScale, 1.f, 1.f, 1.f);크기 변환 행렬을 만드는 함수오브젝트의 크기를 x, y, z 방향으로 늘리거나 줄이는 역할 D3DXMatrixRotationX(&matRotX, D3DXToRadian(angle));D3DXMatrixRotationY(&matRotY, D3DXToRadian(angle));D3DXMatrixRotationZ(&matRotZ, D3DXToRadian(angle));D3DXToRadian // 라디안으로 변경하는 함수회전 변환 행렬을 만드는 함수보통 오브젝트를 회전시킬때 혹은 방향벡터 vLook을 회전시킬..

클라이언트 2025.05.25

[게임수학] 행렬(Matrix)의 종류

행렬이란?수학에서 행렬은 수 또는 다항식 등을 직사각형 모양으로 배열한 것을 말한다.행렬에는 정방행렬, 대각행렬, 삼각행렬, 항등행렬, 전치행렬, 역행렬 등이 있다. 정방행렬이란?행과 열의 수가 같은 행렬 (즉, nxn 크기의 행렬) ex) 2x2, 3x3, 4x4등이 있다.DirectX에서는 4x4 행렬을 D3DXMATRIX 자료형으로 표현한다. OpenGL에서도 4x4 행렬을 사용한다.#ifndef D3DMATRIX_DEFINEDtypedef struct _D3DMATRIX { union { struct { float _11, _12, _13, _14; float _21, _22, _23, _24; ..

게임수학 2025.05.25