일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- engine
- Direct3D
- 다이렉트X 튜토리얼
- 프로그래밍
- DirectX12
- CPU
- c
- Direct Init
- 세팅
- CommandList
- swapchain
- 코딩
- vertex
- 다이렉트X
- 동기화
- C언어
- Input Assembler
- 다이렉트 초기화
- DirectXTK
- 다중표본화
- DirectX
- GPU
- 게임수학
- DESC
- UE4
- View
- 전처리문
- Direct3D Init
- RenderTargetView
- C++
- Today
- Total
목록전체 글 (71)
비타Cpp
unity webGL에서 node.js로 만든 서버에서 파일을 읽어 들여야 하는 일이 있어서 테스트 코드를 작성해봤습니다. 일단 먼저 유니티 코드부터.. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; public class WebFileOut : MonoBehaviour { public string filePath; public string host; public string port; UnityWebRequest www; // Start is called before the first frame update void Start() { } // Update ..
언리얼 엔진의 게임을 이루는 구성 요소는 크게 4가지 클래스로 구분된다. 게임의 규칙을 정의하고 진행상황을 기록하는 게임 플레이 클래스 - GameMode, GameState, PlayerState... 플레이어, 아군, 적군같은 아바타(언리얼에서는 이를 Pawn이라고 한다.) 클래스 - Pawn, Character... Pawn클래스를 제어하는 컨트롤러 클래스 - Controller, PlayerController, AIController... 플레이어에게 게임에 관한 정보를 표시해주는 출력 관련 클래스 - HUD, Camera... 1. 게임플레이 클래스 - GameMode, GameState GameMode 모든 게임들에는 기본적인 토대들이 있으며, 이러한 규칙들이 게임 모드를 이룹니다. 여기서 말..
언리얼 엔진에서는 로깅 환경을 위해 기본적으로 UE_LOG라는 매크로를 제공한다. 이 매크로의 사용법은 아래와 같다. UE_LOG(카테고리, 로깅 수준, 형식 문자열, 인자...) 이렇게 출력되는 로그는 에디터의 출력 로그 창에서 확인할 수 있다. 이렇게 기록 된는 로그들은 프로젝트 폴더의 Saved폴더 내에 있는 .log 확장자 파일로 저장된다. 로그의 중요도를 나타내는 로깅수준은 크게 메시지, 경고, 에러 이렇게 세 가지로 나뉜다. 그리고 이 중요도에 따라 출력 로그 창에 표시되는 텍스트 색상은 흰색, 노란색, 붉은색으로 표시된다. 이 로깅 수준별 색상은 에디터 메뉴에서 변경이 가능하다. 로그 매크로는 다양한 데이터를 하나의 문자열로 조합해 출력할 수 있다. C언어의 printf 함수와 같은 형식으로..
GPU가 정점 배열에 접근하려면, 그 정점들을 버퍼라는 GPU 자원(ID3D12Resource)에 넣어 두어야 한다. 정점들을 저장하는 버퍼를 정점 버퍼(Vertex Buffer)라고 부른다. 버퍼는 텍스처보다 단순한 자원이다. 버퍼는 다차원이 아니며, 밉맵이나 필터, 다중 표본화 기능이 없다. 응용 프로그램에서 정점 같은 자료 원소들의 배열을 GPU에 제공해야 할 때에는 항상 버퍼를 사용한다. 정점 버퍼를 생성하려면 D3D12_RESOURCE_DESC를 채우고 ID3D12Device::CreateCommittedResource 메서드를 호출해서 ID3D12Resource객체를 생성한다. Direct3D 12는 D3D12_RESOURCE_DESC를 상속해서 편의용 생성자들과 메서들을 추가한 C++ 래퍼 ..
Direct3D에서는 정점(Vertex)에 공간적인 좌표값과 다른 추가적인 데이터를 부여할 수 있다. 원하는 데이터(특성)를 커스텀 정점 형식(Vertex Format)을 만들려면 우선 그러한 자료를 담을 구조체를 정의해야 한다. 다음은 서로 다른 두 가지 정점 형식의 예이다. Vertex1 구조체 struct Vertex1 { XMFLOAT3 Pos; XMFLOAT4 Color; } Vertex2 구조체 struct Vectex2 { XMFLOAT3 Pos; XMFLOAT3 Normal; XMFLOAT2 Tex0; XMFLOAT2 Tex1; } 정점 구조체를 정의한 다음에는 정점 구조체의 각 필드, 즉 정점의 각 성분으로 무엇을 해야 하는지를 Direct3D에게 알려 주어야 한다. 그러한 정보를 Dir..
지금 까지 만들어진 응용 프로그램 프레임워크를 이용하여 간단한 예제프로그램을 만들어 보자. 이 프로그램의 주된 기능은 부모 클래스인 D3DApp이 대부분 담당하기 때문에 이 예제만의 특별한 코드는 거의 없다. #include "../../_Common/d3dApp.h" class InitDirect3DApp : public D3DApp { public: InitDirect3DApp(HINSTANCE hInstance); ~InitDirect3DApp(); virtual bool Initialize()override; private: virtual void OnResize()override; virtual void Update(const GameTimer& gt)override; virtual void D..
대체로 게임 응용프로그램들은 Win32 메시지를 그리 많이 다루지 않는다. 응용 프로그램 코드의 핵심부는 Win32의 메시지 처리부의 유휴상태(Idle) 처리 도중에 실행된다.(즉, Window 메시지가 없을때.) 그래도 필수적으로 처리해야 할 주요 메시지들이 있긴하다. 예를 들면 게임을 하다가 ALT+Tab을 하여 포커스를 응용프로램이 아닌 다른 프로그램으로 전환할때 게임들이 일시정지된는 경우가 있다. 다음은 예제 프로그램에 있는 메시지 처리부 부분이다. LRESULT D3DApp::MsgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { // WM_ACTIVATE는 창이 활성화되거나 비활성화 될때 보내집니다. // 창이 비..
카메라의 이동 회전 방식 중에 중심점으로부터 일정 거리를 반지름으로 하여 구를 그리며 이동하는 방식이 있다. 여기서 카메라가 바라보는 방향은 쉽게 중심점 - 카메라 위치의 단위 벡터를 이용하면 된다. 하지만 카메라의 위치는 조금 생각을 해봐야 한다. 여기서 필요한것은 y축에서의 회전량 phi, x축의 회전량 theta, 마지막으로 반지름(중심점과 카메라의 거리) radius(r)이다. 이 세가지 요소를 이용하여 구하는 카메라의 좌표는 다음과 같다. $$x' = r\times\sin(phi)\times\cos(theta)\\ y' = r\times\cos(phi)\\ z' = r\times\sin(phi)\times\sin(theta)$$ 이러한 공식이 나오는 풀이과정은 아래 그림을 보면 알 수 있다.