728x90

프로그래밍 209

14. FXC

원래는 DX11의 EFFECT시스템을 활용하는 예제였을 텐데...DX12에서 EFFECT시스템이 사라지면서 (아마도 변경되면서) 예제가 간단하게 수정되었다. 그저 정점쉐이더에서 상수버퍼의 정보를 받아, 정점의 색을 시간에 따라 변경해주는 예제이다.이렇게 하고 나니까 이런 예제는 이미 했던 것 같은데...(..) 어쨌든 obj와 sample, 쉐이더 파일의 내용이 조금씩 변경되었다.중요한 내용은 sample에 다 있다. obj의 내용은 이 예제의 내용을 표현하기 위해서 임시로 변경된 정도이다. obj.h #pragma once #include "header.h" #include "input.h" enum ShaderName { Vertex = 1, Pixel = 2, Geometry = 3, Hull = ..

13. GeometryShaderPoint

선택한 이미지를 기하쉐이더로 여러개 뿌리고 쉐이더에 넘긴 상수버퍼의 값으로 이미지 크기나 색조등을 조절하는 예제. 저번 포스팅에서 obj.h obj.cpp / sample.h sample.cpp 부분과 쉐이더 코드인 SVertex.txt 부분이 달라졌다. 특히 obj.cpp 파일에 중요한 내용이 추가되었다. 쉐이더 코드는 편집할 때만 hlsl확장자를 붙이고 txt로 놓고 관리하는게 오류에서 훨씬 자유롭다. 쉐이더 코드나 이미지 파일은 경로를 따로 잡아줄 수도 있지만 현재는 프로젝트 내부에 소스 파일과 함께 두는것이 편할 것이다. obj.h #pragma once #include "header.h" #include "input.h" enum ShaderName { Vertex = 1, Pixel = 2, ..

12. StagingTextureToResouce

불러온 이미지를 CPU에서 수정해서 화면에 뿌리는 예제 core class에서 다 해결하는게 지저분해서 sample class를 만들었다. 이전 포스트에서 중요하게 달라진 부분은 obj class와 추가된 UserTexture class. obj class가 어떻게 돌아가고 있는지 잡고 있어야지 바뀐 부분을 캐치하고 수정하고 다시 정리할 수 있을 것이다. core.h #pragma once #include "wndC.h" #include "timer.h" #include "write.h" #include "input.h" #include "sample.h" class coreC_DX : public wndC_DX { timerC_DX m_GameTimer; writeC_DX m_Font; sample s..

11. SamplerState

샘플러 스테이트를 적용한 코드 Input의 keyDownOnce와 KeyUp 함수가 제대로 작동을 안하니 체크한 부분에 중단점 설정하고 확인해야 결과를 보기 좋을 것이다. 진도가 좀 급해서 일단 코드만 올리고 있지만 좀 여유로워지면 코드에 대한 설명을 추가하려고 한다. 지난 포스팅의 코드에서 obj.h와 obj.cpp에만 내용이 추가된 것이지만 혹시 모르니 이번에는 전체 코드를 첨부한다. //아 갑자기 든 생각인데 이미지 경로는 따로 설정해야한다. header.h #pragma once #pragma warning(disable : 4005) #define DIRECTINPUT_VERSION 0x0800 #pragma region //헤더 및 lib 포함 //DX11을 쓰려면 필요함 #pragma com..

10. 텍스쳐 띄우기 - 2

아니 분명 몇달전에 했던 건데 안돼서 거의 한달 걸림... 토폴리지로 범위를 지정하고 그 위에 텍스쳐를 입히는 방식으로 처리했다. 전체 이미지를 배경으로 띄우는 방식으로도 사용가능하고,이미지를 잘라서 일부만 띄울 수도 있고, 위치 데이터를 조정할 수도 있다. DX로 2D게임 만들때 기본적으로 사용했던 방법. 윈도우 생성 소스부터 쭉 올린다. 스크롤을 줄이기 위해서 타이머, 폰트, 인풋은 빼놨는데 이전 소스에서 그대로 가져와서 붙이면 된다. header.h #pragma once #pragma warning(disable : 4005) #define DIRECTINPUT_VERSION 0x0800 #pragma region //헤더 및 lib 포함 //DX11을 쓰려면 필요함 #pragma comment ..

9. 텍스쳐 띄우기 -1

1. 배경으로 띄우기. smaple.h #pragma once #pragma comment(lib, "TLib.lib") #include "zCore.h" #include "mathHeader_L.h" namespace Lypi { class Sample : public zCore { //실제 텍스쳐를 표시할 때 사용할 리소스 ComPtr m_pTexture; D3D11_TEXTURE2D_DESC m_TextureDesc; //백버퍼용 리소스 ComPtr m_pBackBuffer; D3D11_TEXTURE2D_DESC m_BackBuffereDesc; public: ID3D11Texture2D * GetTexture2DFromFile(LPCWSTR filename, D3DX11_IMAGE_LOAD_INF..

8. simpleShape Library

# 라이브러리 정리 한번 함. 여태까지 샘플에서 만들었던 도형 클래스를 라이브러리로 옮겼다. stdHeader.h // 토폴로지 타입, 컬링모드, 필모드를 전역변수로 뺐다. #pragma once #define DIRECTINPUT_VERSION 0x0800 #define _CRT_SECURE_NO_WARNINGS #pragma warning( disable:4005) //매크로 재정의 에러 띄우지 않기. //#define _DISABLE_EXTENDED_ALIGNED_STORAGE //메모리 자동 정렬 사용 안함? #pragma region //헤더 파일 및 라이브러리 파일 추가 #include #include #include #include #include //스마트 포인터 사용 #include //..

7. Stream Output Stage

# 스트림 아웃풋 스테이지를 사용하는 예제.# 3일 걸렸다... 아직도 이론적으로 제대로 이해하고 있는지 모르겠지만 일단 원하는대로 실행은 된다. VS.hlsl struct VS_OUTPUT { float4 p : SV_POSITION; }; VS_OUTPUT VS(float4 p : POSITION) { VS_OUTPUT output = (VS_OUTPUT)0; output.p = p; return output; } PS.hlsl struct VS_OUTPUT { float4 p : SV_POSITION; }; float4 PS(VS_OUTPUT p : SV_POSITION) : SV_Target { return float4(1.0f, 1.0f, 1.0f, 1.0f); } GS.hlsl//주석처리된 코..

6. GeometryShader

# 기하 쉐이더를 사용하는 예제. # 정점 쉐이더와 픽셀 쉐이더는 내용은 그대로지만 이후에 계속 사용할 구조로 바뀌었으므로 새로 올린다. VS.hlsl struct VS_OUTPUT { float4 p : SV_POSITION; }; VS_OUTPUT VS(float4 p : POSITION) { VS_OUTPUT output = (VS_OUTPUT)0; output.p = p; return output; } PS.hlsl struct VS_OUTPUT { float4 p : SV_POSITION; }; float4 PS(VS_OUTPUT p : SV_POSITION) : SV_Target { return float4(1.0f, 1.0f, 1.0f, 1.0f); } GS.hlsl struct VS_OUT..

5. Constant Buffer

Constant Buffer# 상수 버퍼 활용 예제는 조금 바뀐게 많으므로 업데이트한 파일의 전체 소스를 첨부함.# mathHeader_L.h은 그냥 만든게 아까워서 쓰는 것일뿐이니 D3D수학 라이브러리의 내용을 쓰는 것이 좋다.VS.hlsl //상수 버퍼 cbuffer cb0 { float4Color : packoffset(c0); floatfTime : packoffset(c1.x); }; //정점 쉐이더 반환값 구조체 struct VS_OUTPUT { float4 Position : SV_Position; // vertex position float4 ColorChange : COLOR0; // vertex diffuse color }; //정점 쉐이더 VS_OUTPUT VS(float3 p : P..

반응형