분류 전체보기 119

DX2D_14 Texture (Sampler state, Blend State)

PS 단계에서 sampler, blend 옵션 사용 해서 이미지 처리 방식 활용 Sampler State : Mipmap 처리 할 때 (확대, 축소) 픽셀 처리 방법 정의 Blend State : Alpha(투명도) 처리 방법 정의 1. InitScene() -> Texture용 Resource 만들기 2. Render() -> Texture 이미지값 넘기는 코드 작성 3. 03_Texture.fx 1. 이미지를 받을수 있는 Texture2D 변수 생성 2. sampler state 기본값을 사용 해서 Uv 위치에 이미지 셋팅 3. 실행 화면 4. Blend state, Sampler State 활용 1. Render() -> pass, select UINT 만들어서 PASS 선택 및 sampler 선택..

DirectX/DirectX 2D 2023.03.22

DX2D_13 Rect_Control

이번엔 Time 클래스에서 구해지는 Delta Time을 통해서 기존에 사용한 Rect_Control 클래스에 점프 구현과 중력등을 구현 Delta Time 이란? 1초에 그려지는 FPS를 시간을 나눈 값을 애기하는데 예를들어 FPS 60이라고 하면 1초에 60번 그리기 때문에 0.1초의 값이 반환 되는것이다. FPS값이 높을수록 점점 소수로 변해지고 범위는 0 ~ 1로 생각 하면 된다. 1. Rect_Control.h 점프 구현에 필요한 함수와 변수를 선언 ※ velocity 같은 경우는 추후에 쓰이는곳에 따라 다르지만 대부분 힘, 속도 같은 값을 표현 할 때 많이 사용함 더보기 #pragma once #include "Rect.h" class Rect_Control : public Rect { pub..

DirectX/DirectX 2D 2022.12.24

DX2D_12 Time (System)

게임에서 TIme은 정말 중요한 요소중 하나인데 우리가 알고 있는 FPS가 1초당 그림을 몇번 그려지는 냐에 따라 움직임이 버벅리거나 부드럽게 움직여지는데 중요한건 각 컴퓨터의 성능 마다 프레임 처리 속도 즉 시간 측정이 달라지기 때문에 공통으로 사용 하는 시간 클래스를 하나 만들어서 사용 할 예정 좀더 간략 하게 애기하면 A라는 컴퓨터는 1초당 3000 FPS 그려지는 속도를 가지는 성능 B라는 컴퓨터는 1초당 1000 FPS 가진다면 A와 B의 시간차이가 나기 때문에 같은 속도를 가진 캐릭터를 움직이여도 A라는 컴퓨터가 더 빠르게 움직이기 때문에 사용 하는 클래스 Time 클래스를 보면 QueryPerformanceCounter() 함수가 있는데 주파수 통해서 시간을 구해오는 기능 이라는것만 알아두면..

DirectX/DirectX 2D 2022.12.15

DX2D_11 Rect_Control (상속, 다형성)

C++ 에서 사용 할 수 있는 기능중 상속과 다형성을 사용하는데 개념은 아래와 같다. 상속 : 부모 클래스의 기능을 자식 클래스에서 상속을 받아 사용 한다. 큰 특징은 자식 클래스들은 점점 구체화 됨. 예를 들어 자동차 설계도로 애기 하자면 부모 클래스는 간단한 뼈대의 구조만 있다면 상속 받은 자식 클래스 들은 점점 기능을 붙여 나가면서 점점 구체화 된다는 점 다형성 : 부모 클래스의 공통으로 사용되는 함수 및 기능은 자식 클래스 에서 오버라이딩 형태로 사용 예를 들어 자동차의 공통 기능 브레이크 가정 하면 상속받은 A, B라는 차는 공통점으로 브레이크 기능을 호출 해서 사용 가능 하고 이 추가적 으로 UpCasting, DownCasting 개념이 같이 들어가 있다. 위에 2가지 개념을 가진체로 기존의..

DirectX/DirectX 2D 2022.12.14

DX2D_10 Rect

이번에는 하나의 네모를 그리기위해 Scene.cpp에서 각종 변수 및 생성 하는 코드를 짜서 그렸는데 이젠 하나의 클래스화 시켜서 클래스 생성해서 간단하게 생성하는 형태로 작업 할 예정 ※ 기존에 모든 작업 내용을 Rect class에 넣어서 사용 [객체화] 1. Rect 클래스, 헤더 생성 Objects 필터,폴더 생성 후 Rect클래스, 헤더 생성 2. Rect.h 정의 ※ Scene.cpp에서 네모를 그리기 위한 변수, 구조체 정의 하고 추가적으로 필요한 내용 정의 더보기 #pragma once class Rect { public: Rect(Shader* shader); Rect(Shader* shader, Vector2 position, Vector2 scale, D3DXCOLOR color = ..

DirectX/DirectX 2D 2022.12.07

DX2D_9 WVP2

DX2D_9에서 많은 함수 들이 사용 되었는데 D3DXMatrixIdentity() 같은 항등행렬로 초기화 같은 것도 있지만 추가 설명 및 클래스를 깔끔하게 정리 할 예정 1. 클래스 정리 쓸모 없거나 중복되는 코드를 정리해서 Github에 올려 둠 https://github.com/ascher8159/DX2D DX2D_09_02 2. 함수 기능 정리 -- 공통 D3DXMatrixIdentity() ※ Matrix 구조체 및 4*4 행렬이 들어오면 항등 행렬로 반환 -- 카메라 관련 D3DXMatrixLookAtLH() ※ 카메라가 바라보는 눈, 위치, 카메라위 Up Vector값를 셋팅 후 반환 (왼손 좌표계) D3DXMatrixOrthoOffCenterLH() ※ 카메라가 비춰지는 화면 정의 (왼손 ..

DirectX/DirectX 2D 2022.12.04

DX2D_09 WVP

현재 까지 프로젝트를 실행을 하게 되면 NDC 공간에 있는 오브젝트 만 보이는데 이제 투영을 통해서 그려볼 예정 ※ NDC : 각 오브젝트의 자신만의 공간을 의미 X,Y -1 ~ 1 사이로 표현 1. WVP 관련 지식 변환 과정 NDC 공간에서 World 넘어 갈때 VS 에서 바꿔준다 (2D -> 3D) World 공간에서 다시 ViewPort변환 후 RS에서 필요 없는 부분은 잘라준다 변환 해준다 (3D -> 2D) ※ 최종 출력전에 Orthgraphic Projection 또는 Perspective Projection 통해서 최종적으로 출력 앞으로 World(월드), View(카메라), Projection(투영 공간) 사용하는데 필요한 구조체는 D3DXMATRIX 이고 4*4 형태의 행렬이다. Mat..

DirectX/DirectX 2D 2022.12.01

DX2D_08 ImGui

_Libraries안에 있는 ImGui 클래스는 c++ 버젼에 GUI /Widget 관련 만들때 사용되는 라이브러리 이다. 구글에서도 Github 통해서 다운 받을 수 있고 해당 ImGui 관련 기능을 ImGui.lib 정적 라이브러리로 만들어서 사용. 1. ImGui 생성 ※ Device.cpp에 WPARAM Running()함수 영역에 키보드 관련 클래스 위에 선언 (싱글톤 방식) 더보기 WPARAM Running() { MSG msg; ZeroMemory(&msg, sizeof(MSG)); // 싱글톤 ImGui::Create(Hwnd, Device, DeviceContext); ImGui::StyleColorsDark(); //테마 (안해도됨) Key = new Keyboard(); InitSce..

DirectX/DirectX 2D 2022.11.27

정리 & Plug in

기존 hlsl 쉐이더 파일에서 fx 변경및 전용 클래스에 변경점과 Shader 파일에서도 c++에서 사용되는 자동 완성 기능 plug in 다운 및 간단한 여태까지 배운 내용 정리 1. Shader 클래스 & fx 파일 사용 으로 인한 변화 1. 기존에 hlsl 파일로 사용한 경우 RS 단계 옵션 설정 부분을 오로지 c++ 에서만 했던 부분을 이제 fx 통해서 gpu 영역에서 수정 할 수 있다. 2. cpu 영역과 gpu 영역에 따른 연결 및 각종 선언 부분은 Shader 클래스 통해서 간략하게 사용 할 수 있도록 변경 되엇다. 3. 기존에 SemanticName이름 및 인덱스 번호를 사용 규칙 때문에 대문자 제한 받았던 부분을 fx 통해서는 꼭 필요한 선언 부분 제외 하고선 대소문자 구분이 사라졌다. ..

DirectX/DirectX 2D 2022.11.26

DX2D_07 Librarie 및 Utilitie

기존에 HLSL 파일을 통해서 쉐이더 파일을 썻는데 이게 cpu와 gpu 연결 시키는 layoutDesc 통해서 매번 SemanticName을 맞춰서 선언 하기도 관리 도 해야 하기 때문에 shader 관련 클래스 및 hlsl -> fx, fxo 파일로 변경 해서 사용 Utilitie도 다른 라이브러리 지원 및 주로 사용할 클래스들을 모아둘 관리용 파일 1. Libraries 위치 및 설명 ※ 파일은 솔루션 밖에 만들어 둬서 혹시나 다른 프로젝트도 경로만 셋팅 하면 사용 하도록 둠 ※ 빨강색 선 위로 fx 관련 필요한 API / 빨강색 선 아래 ui 관련 만들수 있는 API ※ 인터넷에 해당 클래스, 헤더 치면 더 높은 버젼이 있는 Github로 있으니 필요하면 해당 파일로 다운 2. 경로 설정 & 준수..

DirectX/DirectX 2D 2022.11.24