728x90

게임 개발 5

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 ..

반응형