예쁜 꿈을 꾸라고
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 분류 전체보기
      • Unreal Engine
        • Unreal 기초
        • Unreal Bug & Error
        • Dedicated Server
        • GAS
        • Behavior Tree
        • UI
        • 미니게임
      • 게임 프로그래밍
        • 게임 프로그래밍 기초
        • 게임 수학
        • 게임 프레임워크
        • 게임 서버
      • WindowsAPI
        • DirectX
      • 자료구조와 알고리즘
      • Git
      • 포트폴리오
      • 취업준비
      • 기타
  • 홈
  • 태그
  • 방명록
WindowsAPI/DirectX

DirectX 게임 프로그래밍(9) - 매핑(Mapping), Map과 Unmap

# 매핑(Mapping)이란?1. 서로 다른 메모리 공간이나 데이터 구조를 연결하거나 연관짓는 과정2. DX에서는 CPU와 GPU 간 메모리 접근을 가능하게 만들어주는 작업을 의미한다.3. CPU와 GPU는 서로 독립적인 메모리 영역을 사용한다.4. CPU의 메모리 : RAM (메인보드 부착)5. GPU의 메모리 : VRAM (그래픽카드 내장)6. 따라서 CPU가 GPU의 메모리에 직접 접근하거나 데이터를 수정할 수 없고 '매핑' 과정을 통해 GPU의 메모리를 CPU에서 사용할 수 있도록 임시 연결을 해야한다.7. CPU가 GPU 메모리에 접근하여 현재 GPU가 작업중인 데이터를 직접  수정하기 위해 VRAM에 임시 연결하는 과정을 '매핑' 이라고 한다.    # 매핑 과정1. DX에서 매핑은 'Map'..

2024. 12. 29. 17:54
WindowsAPI/DirectX

DirectX 게임 프로그래밍(8) - 회전과 사원수(Quaternion)

# 사원수(Quaternion)1. 사원수는 3D 그래픽스에서 물체의 회전을 효율적으로 계산하기 위해 사용된다.2. 한 축을 지정하여 회전시키는 오일러 각과 회전 행렬에서 발생하는 짐벌락 현상(Gimbal Lock)을 방지하고 연산 효율도 높다.- 오일러 각은 세 축의 회전이 겹치는 경우, 특정 방향으로 회전하지 못하거나 심하게 떨리는 짐벌락 현상(Gimbal Lock)이 발생3. 사원수는 3차원이 아닌 4차원 공간에서 회전을 표현하며 x, y, z 세 축이 모두 회전하더라도 짐벌락 현상이 발생하지 않는다.4. 사원수의 핵심은 회전을 나타내는 축과 각도를 하나의 수학적 객체로 결합한 데 있다.- 오일러 각은 한 축의 회전 각도로 표현한다.

2024. 12. 26. 18:22
WindowsAPI/DirectX

DirectX 게임 프로그래밍(7) - RootComponent

# 부모-자식 구조1. 3D 엔진에서는 물체를 트리 구조로 관리하는 경우가 많다.2. Root : 최상위 부모 노드- 월드 좌표를 가지고 있다.- 위치, 회전, 크기의 기준이 된다.3. Child : 부모 아래 연결된 하위 노드- 부모의 크기, 회전, 위치에 영향을 받으며 로컬 변환을 적용한다.  # DefaultSceneComponent1. Transform은 물체의 크기, 회전, 위치를 포함한 정보를 가지고 있다.2. Transform을 가지고 있는 SceneComponent를 상속받은 DefaultSceneComponent를 RootComponent로 삼는다.3. ChildComponent는 자신의 로컬 행렬에 Root의 월드 행렬을 곱하여 최종 월드 좌표를 계산한다.4. 이 때, 부모(Root)의..

2024. 12. 26. 18:10
WindowsAPI/DirectX

DirectX 게임 프로그래밍(6) - 스왑 체인(Swap Chain) 관련 용어 정리

# 픽셀 데이터1. 각 픽셀이 가져야 할 특성 색상 값2. 색상은 여러 채널로 구성된다.- R채널 : 빨간색- G채널 : 초록색- B채널 : 파란색- A채널 : 알파값(투명도)3. 해상도에 따라 픽셀 데이터의 크기는 달라진다.- 1920 x 1080 해상도의 텍스처는 약 2백만 픽셀 # 렌더링 데이터1. GPU가 연산하여 화면에 출력할 픽셀 데이터2. 1920 x 1080 해상도의 경우, 렌더링 데이터는 1920 x 1080 크기(약 2백만 픽셀)의 픽셀 집합 # 텍스처(Texture)1. GPU가 처리할 수 있는 이미지 데이터의 저장소2. 메모리에 저장된 픽셀 데이터3. 텍스처를 통해 그래픽 객체(모델, 화면 등)에 적용하거나 셰이더에서 사용해 다양한 그래픽 효과를 만들 수 있다.4. 텍스처는 차원..

2024. 12. 26. 00:46
WindowsAPI/DirectX

DirectX 게임 프로그래밍(5) - 렌더링 파이프라인

# 렌더링 파이프라인이란?1. 3D 모델을 화면에 그리기 위해 그래픽 하드웨어가 처리하는 일련의 단계2. Shader라는 그래픽 프로그램을 사용한다.- 그래픽카드는 수학적 연산에 최적화되어 있다.- 행렬은 여러가지 데이터를 하나의 데이터 블록으로 묶기에 최적화된 연산 모델이다.- 렌더링 파이프라인은 CPU가 여러 데이터를 행렬로 변환하여 GPU에게 넘겨주면 수학 연산을 통해 모니터에 그려질 최종 픽셀 색상을 결정하는 과정이다. # 렌더링 파이프라인 필수 5단계1. Input Assembler : 정점(Vertex) 데이터, WVP 행렬 준비2. Vertex Shader : 정점 데이터와 WVP 연산을 통해 삼각형(폴리곤) 생성3. Rasterizer : 그릴 픽셀을 결정4. Pixel Shader :..

2024. 12. 23. 00:18
WindowsAPI/DirectX

DirectX 게임 프로그래밍(4) - Device, Context, DESC, Buffer

# Direct X 11 헤더 및 cpp#include // directx 11.4 API // Device, Context, DXGI 기능 포함#include // 셰이더(HLSL) 컴파일 헤더// 라이브러리(.cpp)#pragma comment(lib, "d3d11") // 렌더링 파이프라인 구성#pragma comment(lib, "d3dcompiler") // 셰이더 컴파일을 위한 라이브러리#pragma comment(lib, "dxguid") // Device, SwapChain 등 인터페이스 정의#pragma comment(lib, "DXGI") // SwapChain 모니터 정보 등 제공 # Direct X 인터페이스 구조ID3D11Device..

2024. 12. 21. 15:10
WindowsAPI/DirectX

DirectX 게임 프로그래밍(3) - 셰이더(Shader) 기초

# 셰이더(Shader)1. GPU에서 실행되는 그래픽스 파이프라인의 특정 단계를 처리하는 프로그램2. 주로 이미지의 시각적 효과나 그래픽 데이터를 처리하는데 사용3. GPU 병렬 처리를 활용해 모니터의 수백 ~ 수천만 개의 픽셀에 출력될 색상값을 결정할 연산을 동시에 처리4. 셰이더는 크게 아래와 같은 작업을 수행한다.4-1. 3D 좌표(화면 좌표) 변환4-2. 조명 및 그림자 계산4-3. 텍스처 매핑4-4. 후처리 효과- 블러, 그림자, 반사, 왜곡 등의 시각 효과4-5. 물리 기반 렌더링- 물리 법칙에 기반한 표면 표현 #HLSL(High-Level Shader Language)1. MS가 DirectX API를 위한 셰이더 프로그래밍 언어로 설계한 고수준 언어2. CPU가 아닌 GPU에서 실..

2024. 12. 19. 17:26
WindowsAPI/DirectX

DirectX 게임 프로그래밍(2) - 게임 엔진과 Loop

윈도우 프로세스의 진입점1. UEngineCore::EngineStart 함수로 진입2. 매개변수로 _hInstance는 내 프로그램의 주소 프로그램을 실행하고 종료할 때까지 무한히 게임 루프를 돌려줄 핵심 클래스 1. UEngineDebug::LeakCheck() : 메모리 누수 체크2. WindowInit() : 윈도우 창 설정 및 생성3. LoadContents() : dll 파일 로드4. UEngineWindow::WindowMessageLoop : 윈도우 메시지 루프에 전달할 함수들 입력 루프에 들어갈 함수는 람다 함수로 작성 파일 경로는 다운로드받는 대상에 따라 경로가 달라질 것이기 때문에 절대경로가 아닌 상대경로이다.그렇기 때문에 어디에 다운로드 받더라도 해당 실행파일이 존재하는 경로를 ..

2024. 12. 15. 19:11
WindowsAPI/DirectX

DirectX 게임 프로그래밍(1) - 게임 엔진 설계 원칙

# 게임 엔진 구성Level 0 : BaseLevel 1 : PlatformLevel 2 : GameEngineLevel 3 : ContetnsLevel 4 : Application Base 단계 : 엔진의 구성하는데 필요한 근본적인 시스템을 지원1. 디버그 (EngineDebug)2. 파일 입출력 (EnginePath, EngineDirectory, EngineFile, EngineSerializer)3. 문자열 (EngineString)4. 수학/물리 연산 (EngineMath)5. 객체 이름, 활성화 여부 지정 (Object)6. 리소스 경로 관리 (EngineResources)7. 시간(EngineTimer)8. 시간을 활용한 이벤트 기능 지원 (TimeEvent)9. 유한상태기계(FSM) ..

2024. 12. 13. 17:12
  • «
  • 1
  • »

공지사항

전체 카테고리

  • 분류 전체보기
    • Unreal Engine
      • Unreal 기초
      • Unreal Bug & Error
      • Dedicated Server
      • GAS
      • Behavior Tree
      • UI
      • 미니게임
    • 게임 프로그래밍
      • 게임 프로그래밍 기초
      • 게임 수학
      • 게임 프레임워크
      • 게임 서버
    • WindowsAPI
      • DirectX
    • 자료구조와 알고리즘
    • Git
    • 포트폴리오
    • 취업준비
    • 기타
애드센스 광고 영역
  • 최근 글
  • 최근 댓글

최근 글

최근댓글

태그

  • #C++
  • #1. ㅇ
  • #게임 프로그래밍
MORE

전체 방문자

오늘
어제
전체

블로그 인기글

Powered by Privatenote Copyright © 예쁜 꿈을 꾸라고 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바