전체 글 119

DX2D_06 IndexBuffer

여태까지 VertexBuffer를 통해서 총 6개의 정점을 통해서 사각형을 그렸는데 사실 정점의 갯수가 많아지면 계산량이 많기 때문에 정점의 갯수를 줄이고선 사용 할려는 방법이다. 똑같은 Buffer를 태우지만 그리는 순서만 넘겨주는 형태로 선언 아래 이미지 처럼 기존엔 6개 통해서 그렸던 거를 4개의 정점으로 사각형을 그리는 형태 Index Buffer 및 코드를 변경 1. Scene.cpp (Vertex관련) Vertex 구조체 변수 관련 변수들 수정 ※ 정점 갯수를 4개로 봐꺼주고 바꾼 갯수 만큼 관련이 되는 값들 변경 더보기 Vertex vertices[4]; void InitScene() { //VertexBuffer Setting & Create VertexBuffer { vertices[0]..

DirectX/DirectX 2D 2022.11.22

DX2D_05 정점 Update

이전 04에선 rs를 cpu영역에서 변경 후 gpu에 값을 셋팅 했다면 이번엔 정점 정보를 수정 해서 다시 셋팅 하고자 함 방법은 2가지 형태가 있는데 gpu영역에 값을 넘겨 줘서 계산 하는 방식과 cpu 영역에서 값을 수정 해서 사용 하는 방식이 있다. 정점 정보가 IA ~ OM 과정에서 잠시 멈춰서 셋팅 하는 방법 1. 준비 Scene.cpp (수정) ※ 키보드로 이동 할 수 있도록 셋팅 (1e-4f -> 1 / -10의 4승) 더보기 void Update() { //if (GetAsyncKeyState('1') & 0x8001) if(Key->Toggle('1')) Wirte = !Wirte; if (Key->Press('A')) { for(int i =0 ; i Press('D')) { for (..

DirectX/DirectX 2D 2022.11.19

DX_4 Keyborad & stdafx.h 수정

Key에 대한 이벤트 관련 처리 해줄 클래스와 Device.h에 있는 각종 헤더 선언을 미리 헤더 컴파일러로 만들어서 사용 1. stdafx.h 만들기 stdafx.h stdafx.cpp 생성 stdafx.cpp #include "stdafx.h" stdafx.h Device.h에 있는 각종 헤더 파일을 옮기기 더보기 #pragma once //Window #include #include //검사용 //STL #include //추가 #include #include using namespace std; //DX Lib #include #include #include #include #pragma comment(lib, "d3d11.lib") #pragma comment(lib, "d3dx11.lib") ..

DX_2 삼각형, DX_3 RS

DX에선 삼각형을 폴리곤 명칭이 있다. 삼각형을 그릴려면 우선 3개의 정점와 첫번째 정점의 기준으로 시계방향으로 되게 그려야 한다. 1. Scene.cpp 수정 InitScene() 함수 수정 ※ 정점의 갯수를 3개로 봐꿈 더보기 void InitScene() { Vertex vertices[3]; vertices[0].Position = Vector3(0.0f, 0.0f, 0.0f); vertices[1].Position = Vector3(-0.5f, 0.5f, 0.0f); vertices[2].Position = Vector3(0.5f, 0.5f, 0.0f); vertices[0].Color = D3DXCOLOR(1, 0, 0, 1); vertices[1].Color = D3DXCOLOR(0, 1, ..

DirectX/DirectX 2D 2022.11.13

DX_1 배경 화면 & Line

1. HLSL 솔루션 탐색기 영역에서 텍스트 생성 -> Effect.hlsl ※ 확장명 까지 쳐야 텍스트 파일에서 hlsl 파일 유형으로 변해진다. hlsl 파일 수정 ※ Shader Type이랑 Model을 지정 코드 작성 더보기 struct VertexInput { float4 Position : POSITION0; float4 Color : COLOR0; }; struct PixelInput { float4 Position : SV_POSITION; float4 Color : COLOR0; }; PixelInput VS(VertexInput input) { PixelInput output; output.Position = input.Position; output.Color = input.Color;..

DirectX/DirectX 2D 2022.11.06

DX 렌더링 파이프라인 구조

렌더링 파이프라인 기본적인 핵심이 되는 쉐이더 영역은 5가지 IA -> VS -> RS -> PS -> OM 렌더링 파이프라인 정확하게 파악하면 IA : VS 버퍼를 사용 하기 위한 입력 조립기 VS : 정점의 정보를 다루는 쉐이더 MVP(Model, View, Projection) 관련 계산을 하는곳 ※ NDC 공간이 아닌 클립공간에서 계산 하면 동차 좌표계를 사용 함) CHS : HS에서 사용할 제어점, 간선의 갯수 셋팅 HS : CHS에서 나오는 값 토대로 제어점 위치 정보(HS , CHS는 묶여서 호출 계산) TS : CHS, HS 정보 토대로 면밀 하게 자름 (시스템 영역 코딩 X) DS : TS의 정점의 정보를 가지는 쉐이더 GS : 인접한 정점과 삼각형, 선, 점 기본형식 처리 SO : VS..

DirectX/DirectX 2D 2022.11.06

DX 셋팅

1. DirectX 설치 구글 검색 : directx software development kit 홈페이지 : https://www.microsoft.com/en-us/download/details.aspx?id=6812 다운로드 설치 진행 (설치 과정은 그냥 동의만 하면되니 별다른 과정 안올림) ※ 설치 과정에서 먼가 오류가 나올수도 있는데 해당 라이브러리 덮어쓰기 관련 일 수 있으니 동의 하고 다운 설치 경로는 왠만하면 기본경로 지정 2. 사용할 IDE, 프로젝트 생성 Visual Studio 2019 새로운 프로젝트 생성 개발 기본 환경 (빈 프로젝트) 경로 & 이름설정 3. 헤더 파일 생성 & 경로 셋팅 임시로 dx 사용 환경을 정의 해줄 헤더 작성 예정. 솔루션 정리 & Device.h 생성 경..

DirectX/DirectX 2D 2022.11.05

Singleton

사용이유 단 하나의 class(객체)를 사용 해야 할 때 사용 ※ 관리 객체, 시스템 등 특징 1. 프로젝트에서 유일한 Only One 객체 (2개이상 존재 할 수 없음) 2. 다른 클래스에서 해당 객체를 접근 할시 특정한 방법으로만 접근 가능 3. 디자인 패턴 중 하나 사용 예제 Singleton.cpp 더보기 #include "stdafx.h" #include "Singleton.h" Singleton* Singleton::instance = nullptr; Singleton::Singleton() { cout