1. Direct3D Texture
1.1 Texture
1.1.1 Texture & Resource
- 자료 원소들의 행렬, 2차원 이미지 자료를 저장하는 것
- Texture의 각 원소는 한 픽셀의 색상을 담지만 유일한 용도는 아님
- 법선 매핑을 사용할 때 Texture의 각 원소가 색상이 아닌 3차원 벡터를 담음
- Texture의 밉맵 수준들이 존재, GPU는 필터링, 다중표본화 등의 특별한 연산을 Texture에 적용
DXGI_FORMAT_R32G32B32_FLOAT; // 세 개의 부동소수점 성분
DXGI_FORMAT_R8G8B8A8_TYPELESS; // 메모리만 확보,자료의 구체적인 해석 방식은 파이프라인을 묶을 때 지정
- 렌더링 파이프라인에는 Texture를 묶을 수 있는 단계들이 여럿 존재
- Texture를 렌더 대상으로 묶는 것 & 셰이더 자원으로서 묶는 것
- 위의 두 가지 용도의 Texture를 사용할 때 Texture를 묶을 두 파이프라인 단계를 지정한 결속 플래그 사용
D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE
- Texture 자원이 파이프라인의 단계에서 직접 묶이는 것이 아님
- Texture가 연관된 Resource View를 파이프라인에 묶음
- Direct3D에서 Texture를 사용할 때 Texture의 초기화 시점에서 Texture Resoure View를 생성해야 함
- Texture를 렌더 대상과 셰이더 자원으로 사용
- Direct3D에 자원의 사용 방식을 알려주고 생성 시점에서 무형식을 지정한 자원 형식의 구체적인 형식을 결정
1.1.2 Texture Pos
- Direct3D는 u 축이 이미지의 가로 방향, v 축(위에서 아래)이 이미지의 세로 방향인 Teuture 좌표계를 사용
- Texture의 좌표는 [0, 1] 구간으로 정규화된 좌표성분들을 사용, Teuture Image의 크기에 독립적인 좌표계를 위함
- Texture Mapping을 위해서 각각의 3차원 삼각형마다 그 삼각형에 입힐 Texture 이미지상의 삼각형을 지정
- 3차원 삼각형의 임의의 점에 대한 Texture 좌표
- 삼각형 정점들에 지정된 Texture 좌표들을 삼각형 면을 따라 보간해서 구함
- 보간에 의해 삼각형의 모든 점마다 그에 대응되는 Texture 좌표가 결정
struct Texture { XMFLOAT3 Pos; XMFLOAT3 Normal; XMFL0AT2 Tex;};
1.1.3 Texture Create & Use
- Texture 자료는 디스크에 저장된 이미지 파일을 읽어 Texture2D 객체에 적재
- Texture 자원이 렌더링 파이프라인에 직접 묶는 것이 아닌 Shader Resource View를 생성 & 파이프라인 묶음
D3DXllCreateTextureFromFile; // 이미지 로드
CreateShaderResourceView; // Texture 객체 생성 & SRV 생성
- 위를 통해 Texture를 생성하였다면 픽셀 셰이더 안에서 그 Texture 자원에 접근할 수 있도록 설정
Texture2D gDiffuseMap; // Pixel Shader
ID3DXllEffectShaderResourceVariable* DiffuseMap; // C++ 응용프로그램
fxDiffuseMap = mFX—>GetVariableByName("gDiffuseMap")->AsShaderResource();
- 위의 코드로 부터 효과 파일의 Texture2D 객체에 대한 포인터를 얻음
- 마지막으로 변수를 갱신해야 한다면 반드시 Apply 함수를 호출
fxDiffuseMap->SetResource(mCrateMapSRV); pass->Apply(0, md3dImmediateContext);
'C++ Algorithm & Study > Game Math & DirectX 11' 카테고리의 다른 글
[Direct11] 18. EX App Program - Texture Box (0) | 2023.06.16 |
---|---|
[Direct11] 17. Direct3D Texture - Filter & Mode (0) | 2023.06.16 |
[Direct11] 15. EX App Program - Light System (0) | 2023.06.15 |
[Direct11] 14. Lighting System - Directional & Point & Spot Light (0) | 2023.06.15 |
[Direct11] 13. Lighting System - Diffuse & Ambient & Specular Light (0) | 2023.06.15 |