DirectX11 공부 4주차. 정반사광, 인스턴싱
안녕하세요오오옷!!
ㅠㅠㅠㅠ rastertek directx11 강좌사이트 끄적끄적해보다가... (빠밤..!!)
저가 매우 궁금해하던 인스턴스 구현에 관한 내용도 있더라구요!! ㅠㅠ
인스턴스 구현부분은 사실 rastertek에서 37번째에서 다뤄질 내용이였지만,
궁금증을 못참고 바로 임시로 건너뛰어버렸습니다..
"어떻게 하면 여러개의 도형을 그릴까?" 라는 궁금증이 사실 예전부터 있었습니다..
흑... 그걸 달성!! 해서 기분좋네요.
물론 rastertek강의 그대로 따라하는건 저의 성미에 맞지않기때문에 또 저 맘대로 수정했습니다 ㅋㅋㅋ
rastertek강의에서는 (5. 텍스쳐)에 관한 소스코드에 이어서 진행했지만,
저는 (10. 정반사광)로 이어서 진행했습니다.
왜냐하면 (5. 텍스쳐) 이부분은 아직3d도 아니기도하고.. 빛구현도 안했을때라서 ..
3d 모델 렌더링이랑 빛구현 다 거치고 난뒤의 내용으로 진행했답니다~~
참고
4주차. 정반사광, 인스턴싱
우선 인스터싱을 구현하려면 기존코드에서 몇가지
바꿔야할 대표적인 사항(그렇다고 밑에서 말한것이 다(all)는 아닙니다.)이있습니다.
1. 인덱스버퍼 제거
2. 인덱스의 갯수를 그리는게 아니라 인스턴스의 갯수로 그린다.
3. InputLayout에 인스턴스의 xyz좌표를 계산하는 요소 추가
SemanticName은 셰이더에서 처리할 시맨틱의 이름입니다.
InputSlot은 인스턴스버퍼에 입력할 슬롯의 갯수입니다.
Format은 xyz와 같이 3개를 다룰거기때문에 rgb까지만
AlignedByteOffset은 시맨틱 순서를 정렬할거냐? 물어보는겁니다.
InputSlotClass는 인스턴스 이기때문에 변경
InstancedataStepRate는 정점버퍼를 한번 처리할때마다 인스턴스를 한번에 1개를 처리한다는 의미
SemanticIndex는 시맨틱의 순서입니다. 2로한 이유는 버텍스 셰이더 파일에 이미 카메라의 위치를 계산하는 원소가 시맨틱1번으로 되있기때문에 2로했습죠~
마지막으로 실행화면!!!
심심해서 텍스쳐 재질도 바꿔봤습니다 우헤헤~
크으으....ㅠㅠㅠㅠ
진짜 감동적인 순간이네요...
자체 게임엔진 만들수있는 그날까지!! 오오오옹우~~
그럼 안녕!
'🕹️자체엔진 > DirectX 11 개인공부' 카테고리의 다른 글
DirectX11 공부 6주차. 폰트 엔진, DirectInput (0) | 2021.11.27 |
---|---|
DirectX11 공부 5주차. 2D모델 렌더링 (0) | 2021.11.20 |
DirectX11 공부 3주차. 텍스쳐, 조명, 3d모델 렌더링, 주변광 (0) | 2021.11.16 |
DirectX11 공부 2주차. Directx초기화와 셰이더, 버퍼, HLSL (0) | 2021.11.08 |
DirectX11 공부 1주차. 프레임워크 설계및 윈도우 생성 (0) | 2021.11.03 |
댓글