전체 글 65

[책공부] 박스 그리기 예제

(사실 이해했는지 모르겠다. 어렴풋이 느껴질 뿐... 그래도 그 느낌을 정리한다.) (챕터가 넘어갈 수록, 글쓴이가 점점 강해지니 좀 읽을만한 정보는 후반 챕터에 있을 것이다. ㄹㅇㅋㅋ) 다음 글 1. 박스 예제(까지)가 연습시켜주는 기술 1_1 초기화 단계 - 창(window) 생성 - 어뎁터 (D3DDevice) 생성 - GPU와 CPU 동기화를 위한 Fence 생성 - GPU와 CPU의 [데이터 전송을 위한 Descriptor View]의 Handle Size 초기화 (아마 요걸로 데이터 블록(아마도 테이블?)을 점프하면서 데이터를 읽을 것 같다.) - Command Queue, Command Allocator, Command List 생성 (멀티 스레딩을 위해 새로 바뀐 GPU에게 렌더링 동작을 ..

Programming/D3D12 2023.12.27

[책공부] Chap6 연습 문제

(이미지 클릭하면 커집니다.) directx 12를 이용한 3d 게임 프로그래밍 입문 - 연습문제 연습 문제 1 연습 문제 2 연습 문제 3 연습 문제 4 연습 문제 6 연습 문제 7 (CB 업로드 버퍼를 새로 만드는 것도 이상하고, Box를 그리고 Flush()를 하고, CB값을 바꾸고 피라미드를 출력하는 것도 이상해서... 결론은 Instancing을 제대로 배워서 하는게 나을 것 같아, 마우스 클릭을 하면 박스와 피라미드를 번갈아 가면서 렌더링 하는 것으로 타협했습니다.) (맨 위에서 그냥 std::array를 새로 하나 만들면 되긴한데, 연습삼아 이렇게 해봤습니다.) 연습 문제 8, 9 연습 문제 10 연습 문제 11 a) 된다. layout 이랑 Buffer랑 따로 작동하고, 등록된다. b) 된..

Programming/D3D12 2023.12.26

[일기장] 책 공부 시작 (D3Ddevice -> viewport 초기화)

요거 사서 공부 시작한다. (번역 별로 안 좋다) http://aladin.kr/p/Zowiq DirectX 12를 이용한 3D 게임 프로그래밍 입문 DirectX 12로 게임을 개발해가며 대화식 컴퓨터 그래픽 프로그래밍을 익히는 입문서다. 1부는 기본적인 수학적 도구들을, 2부는 Direct3D의 기본 과제들을 수행하는 방법을, 그리고 3부는 여러 응용 www.aladin.co.kr 1. 예제코드 공부한 방법 - 어느정도 이미 추상화가 되어 있는 예제 코드를, 그냥 냅다 InitDirect3D() 와 Draw()에 박아 보았다. 2. 배운점 초기화 과정에서 버퍼를 초기화 하는데, ResourceBarrier 에서 약간 삽질을 했다. 1. Command List 나 Command Queue 뭐시기 2. ..

Programming/D3D12 2023.12.21

[C][책정리] 전처리기 냅다 정리

옛날에 사놓고 한번도 안 본 책 버리기 전에, 아리까리한게 뭔지 보니깐... 전처리기 챕터가 있었다. 그걸 정리하는 글 (근데 msdn 보니까 이것 말고 뭐가 엄청 많다?) 1. 전처리기 지시문 #include : 헤더 인클루드 #define : 매크로 정의 #undef : 정의 된 매크로 해제 #if, #elif, #else, #endif : 조건에 따라 블럭(?)을 활성화해서 컴파일 할지 결정 #ifdef : 매크로 조건 만족이면 블럭(?)을 활성화해서 컴파일 #ifndef : 매크로 조건 불만족 블럭(?)을 활성화해서 컴파일 2. #define 작동 원리 전처리기라는 이름처럼 컴파일 전에 PI라고 적힌 단어들을, 전처리기 과정에서 3.14로 바꿔(치환)주는 것이다..... 아마도? > #define..

Programming/C++ 2023.12.16

[D3D11][일기장] Point light

1. 시작할때 구조를 너무 이상하고 복잡하게 짰다... 나중에 D3D12로 넘어가야해서, 막 엄청난걸 만들지도 않을건데... (과거의 나야... 왜 그랬니?) 2. D3D11_BIND_CONSTANT_BUFFER 는 16바이트 align이 되어있어야 한다고 한다. 3. 앞으로 계획 - 조명 뭐시기 더 남았는데 그거 시도해보고, - FBX SDK 아직도 안했는데 그거 시도해보고, - 구조를 엄청 간단하게 갈아 엎은 다음에? - D3D12 공부 시작할 예정이다. 그냥 바로 D3D12 시작해야겠다. 책이 배송 임박이라 ㅋㅋㅋㅋㅋ 도움 받은 곳 (help): 1. D3D11 megayuchi의 프로그래밍 강좌 www.youtube.com 2. Win32 Win32 API 무료강의 www.youtube.com 3..

Programming/D3D11 2023.12.07

[일기장] 설계를 좀 더 간단히....

뭐 기능을 넣으면서 새로 공부할 때마다, D3D comptr leak이 나고... 찾기도 힘들고... ReportLiveObjects() 해도 여전히 힘들고... 그래서 struct는 struct 답게, 동작을 싸그리 빼기로 했다. (소멸자는 냅두고) 내부 함수로 초기화를 하든, 맴버를 직접 초기화 하든 내 실력이 부족하면 얼마든지 터질 수 있기에... 1. struct를 가져다 쓰는 쪽에서, 직접 초기화를 한다. 2. 조금 복잡한 친구나, 분기가 많은 경우도 그냥 외부함수를 하나 만들어서 가져다 쓰는 쪽에서 초기화 한다. 로 바꿨다. (1 법칙을 잊지 마라?)

Programming/D3D11 2023.12.02

[assimp] 3d 모델 띄워보기

아이디어는 여기서 : Set up ASSIMP to load models - Jpres 그리고 3d 모델은 여기서 : 무료 3D 모델 - Free3D.com 저번이랑 달라진 건 Mesh와 MeshComp를 추가하였다. 1. assimp에서 aiScene에다가 모델 데이터를 넣어주는데 - Node, Mesh, Material, SubNode, Faces 등등 계층구조로 이루어져 있고, 각각이 여러개가 있을 수 있기 때문에 2. 그리고 assimp을 이용해서, aiScene을 뽑아내는 것은 그냥 다른사람들이 하는 것 처럼 했다. (내가 따라한 버전은 위에 링크에 있다.) 3. 각각의 MeshComp에서 쉐이더와 버퍼를 가지고, (텍스쳐링은 아직 안 했다.) 그대로 그려준다. 4. 그리고 테스트로 만든 액터에..

Programming/D3D11 2023.11.27

[뇌피셜][메모용] Object 단에서 com 변수 초기화/관리

아직 정리를 마무리 한 건 아닙니다... 근데 오늘은 좀 쉬고 싶어서 일단 마무리 ㅋㅋㅋㅋㅋㅋ Scene의 있는 오브젝트들이 각자, 컴포넌트 오브젝트 들도 각자 Update 하고 Render 하고 그런 느낌쓰 인데, 어떤것이 정리가 안되었냐면, 그... 테스트 용으로 넣은 RenderAsset의 맴버인 ObjectRenderComp의 객체인 m_cube가, 딱 구조가 짜여 있어서 RenderAsset의 객체나 자식 마다 파라미터만 바꿔서(?) 혹은 그에 맞는 함수를 호출해서(?) 렌더링을 해줘야하는데, 일단 테스트를 어거지로 하느라 약간 Component 느낌쓰로 렌더링이 됩니다. 아무튼 ObjectRenderComp는 요로콤... (덜 귀찮은데, 아직도 귀찮은 느낌...) (그리고 고급(?) 기능 역시..

Programming/D3D11 2023.11.24

[메모용] 프로그램 구조와 D3D의 com 변수 관리 단계

이제 슬슬 리팩토링(?) 캡슐화(?) 같은거를 해야할 때가 왔다. 일단 뇌피셜로 시도해보자. 1. com 변수를 어디서 관리해줄지 1_1. main 단 - ID3D11Device - ID3D11DeviceContext - IDXGISwapChain (1) 1_2. Scene 단 - IDXGISwapChain (2) - ID3D11RasterizerState - ID3D11BlendState - ID3D11DepthStencilState - ID3D11RenderTargetView - ID3D11DepthStencilView 1_3. Object 단 - ID3D11VertexShader - ID3D11InputLayout - ID3D11PixelShader - ID3D11ShaderResourceView ..

Programming/D3D11 2023.11.23