텍스처 개체
Direct3D 10에서는 샘플러와 텍스처를 독립적으로 지정합니다. 텍스처 샘플링은 템플릿 기반 템플릿 개체를 사용하여 구현됩니다. 이 템플릿 기반 템플릿 개체는 특정 형식을 가지며 특정 형식을 반환하며 여러 메서드를 구현합니다.
Direct3D9와 Direct3D10의 차이점:
- Direct3D 9에서 샘플러가 특정 텍스처에 바인딩됩니다.
- Direct3D 10에서는 텍스처와 샘플러가 독립적인 개체입니다. 각 템플릿 기반 텍스처 개체는 텍스처와 샘플러를 모두 입력 매개 변수로 사용하는 텍스처 샘플링 메서드를 구현합니다.
모든 함수에 대해 모든 형식이 지원되는 것은 아닙니다. 따라서 CheckFeatureSupport를 사용하여 특정 사용에 대해 형식이 지원되는지 여부를 검사 합니다.
다음은 (다중 샘플링된 개체를 제외한) 모든 텍스처 개체를 만들기 위한 구문입니다.
Object1 [<Type>] Name; |
---|
다중 샘플링된 개체(Texture2DMS 및 Texture2DMSArray)를 사용하려면 텍스처 크기를 명시적으로 명시하고 샘플 수로 표현해야 합니다.
Object2 [<Type, Samples>] Name; |
---|
매개 변수
항목 | 설명 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Object |
텍스처 개체. 다음 형식 중 하나여야 합니다.
|
||||||||||||||||||||||||
Type |
(선택 사항) 꺾쇠 괄호로 둘러싸인 모든 스칼라 HLSL 유형 또는 벡터 HLSL 유형. 기본 유형은 float4입니다. |
||||||||||||||||||||||||
Name |
텍스처 개체 이름을 지정하는 ASCII 문자열입니다. |
||||||||||||||||||||||||
Samples |
샘플 수(범위: 1~128)입니다. |
예 1
다음은 텍스처 개체를 선언하는 예제입니다.
Texture2D <float4> MyTex;
Texture2DMS <float4, 128> MyMSTex;
텍스처 개체 메서드
각 텍스처 개체는 특정 메서드를 구현합니다. 다음 표에는 모든 메서드가 나열되어 있습니다. 메서드를 사용할 수 있는 개체를 확인하려면 각 메서드에 대한 참조 페이지를 참조하세요.
텍스처 메서드 | 설명 | vs_4_0 | vs_4_1 | ps_4_0 | ps_4_1 | gs_4_0 | gs_4_1 |
---|---|---|---|---|---|---|---|
CalculateLevelOfDetail | LOD를 계산하고 고정된 결과를 반환합니다. | x | |||||
CalculateLevelOfDetailUnclamped | LOD를 계산하고, 고정되지 않은 결과를 반환합니다. | x | |||||
Gather | 텍스처를 샘플링할 때 쌍선형 보간에 사용되는 4개의 샘플(빨간색 구성 요소만)을 가져옵니다. | x | x | x | |||
GetDimensions | 지정된 mipmap 수준에 대한 텍스처 차원을 가져옵니다. | x | x | x | x | x | x |
GetDimensions (MultiSample) | 지정된 mipmap 수준에 대한 텍스처 차원을 가져옵니다. | x | x | x | |||
GetSamplePosition | 지정된 샘플의 위치를 가져옵니다. | x | x | x | |||
로드 | 필터링이나 샘플링 없이 데이터를 로드합니다. | x | x | x | x | x | x |
Load (Multisample) | 필터링이나 샘플링 없이 데이터를 로드합니다. | x | x | x | x | ||
샘플 | 텍스처를 샘플링합니다. | x | x | ||||
SampleBias | mipmap 수준에 바이어스 값을 적용한 후 텍스처를 샘플링합니다. | x | x | ||||
SampleCmp | 비교 값을 사용하여 샘플을 거부하여 텍스처를 샘플링합니다. | x | x | ||||
SampleCmpLevelZero | 비교 값을 사용하여 샘플을 거부하여 텍스처를 샘플링합니다(mipmap 수준 0만 해당). | x | x | x | x | x | x |
SampleGrad | 샘플 위치가 계산되는 방식에 영향을 주는 그라데이션을 사용하여 텍스처를 샘플링합니다. | x | x | x | x | x | x |
SampleLevel | 지정된 mipmap 수준에서 텍스처를 샘플링합니다. | x | x | x | x | x | x |
반환 형식
텍스처 개체 메서드의 반환 형식은 항상 형식 및 샘플 수를 지정해야 하는 다중 샘플링된 앤티앨리어스 텍스처 개체를 제외하고 달리 지정하지 않는 한 float4입니다. 반환 형식은 텍스처 리소스 종류(DXGI_FORMAT)와 동일합니다. 즉, 다음 형식 중 한 가지일 수 있습니다.
Type | 설명 |
---|---|
float | 32비트 부동 소수점(IEEE float와의 차이점은 부동 소수점 규칙 참조) |
int | 32비트 부호 있는 정수 |
부호 없는 정수 | 32비트 부호 없는 정수 |
snorm | -1~1(포함) 범위의 32비트 부동 소수점(IEEE float와의 차이점은 부동 소수점 규칙 참조) |
unorm | 0~1(포함) 범위의 32비트 부동 소수점(IEEE float와의 차이점은 부동 소수점 규칙 참조) |
모든 텍스처 형식 또는 구조체 | 반환되는 구성 요소 수는 1~3개(포함) 사이여야 합니다. |
또한 반환 형식은 구조체를 포함한 모든 텍스처 형식일 수 있지만 4개 미만의 구성 요소(예: 구성 요소 한 개를 반환하는 float1 형식)여야 합니다.
텍스처의 누락된 구성 요소에 대한 기본값
텍스처 리소스 형식에서 누락된 구성 요소의 기본값은 알파 구성 요소(A)를 제외한 모든 구성 요소에 대해 0입니다. 누락된 A의 기본값은 1입니다. 셰이더에 표시되는 방법은 텍스처 리소스 종류에 따라 달라집니다. 실제로 텍스처 리소스 종류에 있는 첫 번째 형식 구성 요소의 양식을 사용합니다(왼쪽부터 RGBA 순서로 시작). 이 양식이 UNORM 또는 FLOAT인 경우 누락된 A의 기본값은 1.0f입니다. 양식이 SINT 또는 UINT인 경우 누락된 A의 기본값은 0x1입니다.
예를 들어 셰이더가 DXGI_FORMAT_R24_UNORM_X8_TYPELESS 텍스처 리소스 종류를 읽을 때 G 및 B의 기본값은 0이고 A의 기본값은 1.0f입니다. 셰이더가 DXGI_FORMAT_R16G16_UINT 텍스처 리소스 종류를 읽을 때 B의 기본값은 0이고, A의 기본값은 0x00000001입니다. 셰이더가 DXGI_FORMAT_R16_SINT 텍스처 리소스 종류를 읽을 때 G 및 B의 기본값은 0이고 A의 기본값은 0x00000001입니다.
예제 2
다음은 텍스처 메서드를 사용한 텍스처 샘플링의 예입니다.
sampler MySamp;
Texture2D <float4> MyTex;
float4 main( float2 TexCoords[2] : TEXCOORD ) : SV_Target
{
return MyTex.Sample( MySamp, TexCoords[0] ));
}
최소 셰이더 모델
이 개체는 다음 셰이더 모델에서 지원됩니다.
셰이더 모델 | 지원됨 |
---|---|
셰이더 모델 4 이상의 셰이더 모델 | 예 |