지난번에 만들었던 기본프레임워크에서 단순한 Shader를 추가하여 삼각형을 만들어본다.
GeoMetry 생성
CreateGeometry() - 정점 데이터 및 버퍼 생성
- CPU에서 만든 _vertices 데이터를 GPU 메모리로 복사
- D3D11_USAGE_IMMUTABLE -> 변경되지 않는 정적 데이터로 성능 최적화
- IA(Input Assembler) 단계에서 이 버퍼를 참조

D3D11_USAGE 열거형
- D3D11_USAGE_DEFAULT
- GPU에서 읽기 및 쓰기 엑세스가 필요한 리소스
- D3D11_USAGE_IMMUTABLE
- GPU에서만 읽을 수 있느 리소스, GPU에서 작성할 수 없으며, CPU에선 전혀 엑세스할 수 없다.
- D3D11_USAGE_DYNAMIC
- GPU(읽기 전용)와 CPU(쓰기 전용)에서 엑세스할 수 있는 리소스
- D3D11_USAGE_STAGING
- GPU에서 CPU로의 데이터 전송을 지원하는 리소스
LoadShaderFromFile - HLSL 셰이더 컴파일 함수
- D3DCompileFromFIle()을 통해 .hlsl 파일을 직접 컨파일
- D3DCOMPILE_DEBUG : 디버그 정보 포함, D3DCOMPILE_SKIP_OPTIMIZTION : 최적화 생략
- 컴파일된 결과가 blob에 저장되어 이후 셰이더 생성에 사용

VSPS.hlsl

CreateVS() / CreatePS() - 셰이더 로드 및 생성



결과물
