[SetTextureStateState]
HRESULT SetTextureStageState(
DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value );
파라미터
Stage[in] 스테이트값을 설정하는 텍스처의 스테이지 식별자. 스테이지 식별자는 0 으로부터 시작된다. 장치는 최대 8 세트까지 텍스처를 가질 수가 있으므로,Stage 로 지정할 수 있는 최대치는 7 이다.Type[in] 설정하는 텍스처 스테이트. 이 파라미터에는,D3DTEXTURESTAGESTATETYPE 열거형의 임의의 멤버를 지정할 수 있다.Value[in] 설정하는 스테이트값. 이 값의 의미는 Type 파라미터에 의해 정해진다.
반환값
성공했을 경우는,D3D_OK 를 돌려준다.
실패했을 경우는, D3DERR_INVALIDCALL 를 돌려준다.
[D3DTEXTURESTAGESTATETYPE]
TSS는 TextureStageState의 약어인듯 하다.
OP ARG

-OP는 어떻게 -ARG는 무엇과를 설정하는 옵션같다.
D3DTSS_COLOROP
텍스처 스테이지 스테이트는 텍스처 컬러 혼합 처리이며,D3DTEXTUREOP (아래 참조)열거형의 멤버에 의해 식별된다. 최초의 텍스처 스테이지 (스테이지 0)의 디폴트값은 D3DTOP_MODULATE 이며, 그 이외의 모든 스테이지의 디폴트값은 D3DTOP_DISABLE 이다.
D3DTSS_COLORARG1
텍스처 스테이지 스테이트는, 그 스테이지에 대한 최초의 색인수이며,D3DTA(아래 참조)의 어느 쪽에 섞을것인가 나타난다. 디폴트의 인수는 D3DTA_TEXTURE 이다. 읽고 쓰기용의 임시 레지스터의 색을 선택하려면 , D3DTA_TEMP 를 지정한다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는 경우에 지원 된다. 이 레지스터의 디폴트값은, (0.0, 0.0, 0.0, 0.0)이다.
D3DTSS_COLORARG2
텍스처 스테이지 스테이트는, 그 스테이지에 대한 2 번째의 색인수이며,D3DTA 에 의해 식별된다. 디폴트의 인수는 D3DTA_CURRENT 이다.읽고 쓰기용의 임시 레지스터의 색을 선택하려면 , D3DTA_TEMP 를 지정한다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는경우에 지원 된다. 이 레지스터의 디폴트값은, (0.0, 0.0, 0.0, 0.0)이다.
D3DTSS_ALPHAOP
텍스처 스테이지 스테이트는, 텍스처 알파 혼합 처리이며,D3DTEXTUREOP 열거형의 멤버에 의해 식별된다. 최초의 텍스처 스테이지(스테이지 0)의 디폴트값은 D3DTOP_SELECTARG1 이며, 그 이외의 모든 스테이지의 디폴트값은 D3DTOP_DISABLE 이다.
D3DTSS_ALPHAARG1
텍스처 스테이지 스테이트는, 그 스테이지에 대한 최초의 알파 인수이며,D3DTA 에 의해 식별된다. 디폴트의 인수는 D3DTA_TEXTURE 이다.그 스테이지에 텍스처가 설정되어 있지 않은 경우는, D3DTA_DIFFUSE 가 디폴트의 인수가 된다. 읽고 쓰기용의 임시 레지스터의 색을 선택하려면, D3DTA_TEMP 를 지정한다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는 경우에 지원 된다. 이 레지스터의 디폴트값은, (0.0, 0.0, 0.0, 0.0)이다.
D3DTSS_ALPHAARG2텍스처 스테이지 스테이트는, 스테이지의 2 번째의 알파 인수이며,D3DTA 에 의해 식별된다. 디폴트의 인수는 D3DTA_CURRENT 이다.읽고 쓰기용의 임시 레지스터의 색을 선택하려면 , D3DTA_TEMP 를 지정한다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는경우에 지원 된다. 이 레지스터의 디폴트값은, (0.0, 0.0, 0.0, 0.0)이다.
D3DTSS_BUMPENVMAT00
텍스처 스테이지 스테이트는, 범프 맵핑 행렬의 [0][0] 계수에 대한 부동 소수점값이다. 디폴트값은 0.0 이다.
D3DTSS_BUMPENVMAT01
텍스처 스테이지 스테이트는, 범프 맵핑 행렬의 [0][1] 계수에 대한 부동 소수점값이다. 디폴트값은 0.0 이다.
D3DTSS_BUMPENVMAT10
텍스처 스테이지 스테이트는, 범프 맵핑 행렬의 [1][0] 계수에 대한 부동 소수점값이다. 디폴트값은 0.0 이다.
D3DTSS_BUMPENVMAT11
텍스처 스테이지 스테이트는, 범프 맵핑 행렬의 [1][1] 계수에 대한 부동 소수점값이다. 디폴트값은 0.0 이다.
D3DTSS_TEXCOORDINDEX
이 텍스처 스테이지에서 사용하기 위해서(때문에) 설정된 텍스처 좌표의 인덱스. 정점 1 개에 대해서 최대 8 세트까지의 텍스처 좌표를 설정할 수 있다. 정점이, 지정된 인덱스의 텍스처 좌표 세트를 포함하지 않은 경우는, u 및 v 좌표 (0,0)가 디폴트로 사용된다.이 플래그는, 고정 기능 정점 처리에서만 사용한다. 예를 들어, 정점 셰이더에서는 사용하지 않는다. 정점 셰이더를 사용해 렌더링 할 때는, 각 스테이지의 텍스처 인덱스를 디폴트값으로 설정할 필요가 있다. 각 스테이지의 디폴트의 인덱스는, 스테이지 인덱스와 같다.이 스테이트에는, 이 텍스처 스테이지에서 사용하는 각 정점에 대한 좌표 세트의 제로로부터 시작되는 인덱스를 설정한다. 또, 애플리케이션에서는, 설정하는 인덱스와의 논리화로서 몇개의 정수를 설정해, 텍스처 변환용의 입력 텍스처 좌표를 자동적으로 생성하도록(듯이) Microsoft® Direct3D® 에 요구할 수 있다. 모든 정수의 일람에 대해서는, 「D3DTSS_TCI 」를 참조할것.제로에 해결되는 D3DTSS_TCI_PASSTHRU 를 제외해, 설정되는 인덱스와 이하의 플래그의 어느쪽이든을 사용하면 텍스처 랩핑 모드의 결정에 인덱스가 엄밀하게 사용된다. 이 플래그는 환경 맵핑을 실시하는 경우는 특히 유효하다.
D3DTSS_BUMPENVLSCALE
범프 맵 휘도(Luminance)에 사용하는 부동 소수점수(실수)의 스케일값. 디폴트값은 0.0 이다.
D3DTSS_BUMPENVLOFFSET범프 맵 휘도(Luminance)에 사용하는 부동 소수점수(실수)의 오프셋(offset). 디폴트값은 0.0 이다.
D3DTSS_TEXTURETRANSFORMFLAGS
D3DTEXTURETRANSFORMFLAGS 열거형의 멤버. 이 텍스처 스테이지의 텍스처 좌표의 변환을 제어한다. 디폴트값은, D3DTTFF_DISABLE 이다.
D3DTSS_COLORARG0
3항연산 (적화와 선형 보간)의 3 번째의 색오퍼랜드의 설정. D3DTA 에 의해 식별된다. 이 설정은, D3DTEXOPCAPS_MULTIPLYADD 또는D3DTEXOPCAPS_LERP 장치 능력이 존재하는 경우에 지원 된다. 디폴트의 인수는 D3DTA_CURRENT 이다. 읽고 쓰기용의 임시 레지스터의 색을선택하려면 , D3DTA_TEMP 를 지정한다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는 경우에 지원 된다. 이 레지스터의디폴트값은, (0.0, 0.0, 0.0, 0.0)이다.
D3DTSS_ALPHAARG0
3항연산 (적화와 선형 보간)의 알파 채널 실렉터 오퍼랜드의 설정. D3DTA 에 의해 식별된다. 이 설정은, D3DTEXOPCAPS_MULTIPLYADD 또는D3DTEXOPCAPS_LERP 장치 능력이 존재하는 경우에 지원 된다. 디폴트의 인수는 D3DTA_CURRENT 이다. 읽고 쓰기용의 임시 레지스터의 색을선택하려면 , D3DTA_TEMP 를 지정한다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는 경우에 지원 된다. 디폴트의인수는, (0.0, 0.0, 0.0, 0.0)이다.
D3DTSS_RESULTARG이 스테이지의 결과의 출력 레지스터를 선택하기 위한 설정. D3DTA 에 의해 식별된다. 이 값은, D3DTA_CURRENT (디폴트값) 또는 D3DTA_TEMP 로설정할 수 있다. D3DTA_TEMP 는, 입력 인수로서 이후의 스테이지에 읽어들일 수가 있는 단일의 임시 레지스터이다. 포그(안개:fog)블렌더 및 frame buffer에게 건네지는 최종적인 색은 D3DTA_CURRENT 로부터 얻어온다의 것으로, 마지막에 액티브한 텍스처 스테이지스테이트는 현재에의 쓰기로 설정해야 한다. 이 설정은, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는 경우에 지원 된다.
D3DTSS_CONSTANT
스테이지마다 정수 컬러. 장치가 스테이지마다 정수 컬러를 지원 할지 어떨지를 확인하려면 ,D3DPMISCCAPS 의 D3DPMISCCAPS_PERSTAGECONSTANT정수를 조사한다. D3DTSS_CONSTANT 는 D3DTA_CONSTANT 로 사용한다. 「D3DTA 」를 참조할것.
D3DTSS_FORCE_DWORD
이 열거형을 강제적으로 32 비트 사이즈에 컴파일 한다. 이 값은 사용되지 않았다
[Type이 COLOROP 혹은 ALPHAOP일 경우 올 수있는 세팅 값]


이 텍스처 스테이지와 보다 높은 인덱스를 가지는 스테이지로부터의 출력을 모두 무효로 한다. 텍스처 맵핑을 무효로 하려면 , 이것을 최초의 텍스처 스테이지 (스테이지 0)의 컬러 처리로서 설정한다. 컬러 처리가 유효하게 되어 있을 때는, 알파 처리를 무효로 하는 것은 할 수 없다. 컬러 혼합이 유효한 경우, 알파 처리를 D3DTOP_DISABLE 로 설정 하면, 부정의 동작이 생긴다.
이 텍스처 스테이지의 최초의 색, 또는 알파 인수를 변경하지 않고 출력으로서 사용한다. 이 처리는, D3DTSS_COLOROP 텍스처 스테이지 스테이트로 사용 하면색인수에 영향을 주어 D3DTSS_ALPHAOP 로 사용했을 경우에는 알파 인수에 영향을 준다.

이 텍스처 스테이지의 2 번째의 색, 또는 알파 인수를 변경하지 않고 출력으로서 사용한다. 이 처리는, D3DTSS_COLOROP 텍스처 스테이지 스테이트로 사용 하면색인수에 영향을 주어 D3DTSS_ALPHAOP 로 사용했을 경우에는 알파 인수에 영향을 준다.

인수의 성분을 곱셈한다.

인수의 성분을 곱셈해, 그 적을 왼쪽으로 1 비트만 쉬프트 (2 로 곱셈하는 것으로 같다) 해 밝게 한다.

인수의 성분을 곱셈해, 그 적을 왼쪽으로 2 비트만 쉬프트 (4 로 곱셈하는 것으로 같다) 해 밝게 한다.

인수의 성분을 덧셈 한다.

[Type이 COLORARG0,1,2 혹은 ALPHAARG0,1,2 혹은 RESULTARG 일 경우 올 수있는 세팅 값]

#define설명
| D3DTA_CURRENT | 텍스처 인수는 전의 혼합 스테이지의 결과이다. 최초의 텍스처 스테이지 (스테이지 0)에서는, 이 인수는 D3DTA_DIFFUSE 와 같다. 전의 혼합 스테이지가 범프 맵 텍스처 (D3DTOP_BUMPENVMAP 처리)를 사용하고 있는 경우는, 범프 맵 텍스처의 전의 스테이지로부터 텍스처가 선택된다. s 가 현재의 텍스처 스테이지를 나타내,s - 1 에 범프 맵 텍스처가 있는 경우, 이 인수는 텍스처 스테이지 s - 2 로부터의 결과 출력이 된다. 읽고 쓰기가 허가된다. |
| D3DTA_DIFFUSE | 텍스처 인수는, gouraud shading 처리중에 정점의 성분으로부터 보간 해 얻을 수 있던 디퓨즈색이다. 정점이 디퓨즈색을 포함하지 않는 경우의 디폴트색은 0xFFFFFFFF 이다. 허가는 읽기 전용이다. |
| D3DTA_SELECTMASK | 모든 인수에 대응하는 마스크값. 텍스처 인수의 설정에는 사용하지 않는다. |
| D3DTA_SPECULAR | 텍스처 인수는, gouraud shading 처리중에 정점의 성분으로부터 보간 된 스펙큐러색이다. 정점이 스펙큐러색을 포함하지 않은 경우, 디폴트색은 0xFFFFFFFF 이다. 허가는 읽기 전용이다. |
| D3DTA_TEMP | 이 텍스처 인수는, 읽고 쓰기용의 임시 레지스터의 색이다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는 경우에 지원 된다. 이 레지스터의 디폴트값은, (0.0, 0.0, 0.0, 0.0)이다. 허가는 읽고 쓰기이다. |
| D3DTA_TEXTURE | 텍스처 인수는, 이 텍스처 스테이지의 텍스처 컬러이다. 허가는 읽기 전용이다. |
| D3DTA_TFACTOR | 텍스처 인수는, 전회 D3DRENDERSTATETYPE 렌더링 스테이트값을 사용해 IDirect3DDevice9::SetRenderState 를 호출했을 때의 텍스처 계수 세트이다. 허가는 읽기 전용이다. |
수식자 플래그
#define설명
| D3DTA_ALPHAREPLICATE | 처리가 완료하기 전에, 알파 정보를 모든 컬러 채널에 복제한다. 이것은 읽기 수식자이다. |
| D3DTA_COMPLEMENT | 인수의 보수를 취한다. 예를 들어, 인수의 결과가 변수 x 로 나타나고 있는 경우, 그 값은 1.0 - x 가 된다. 이것은 읽기 수식자이다. |
D3DTA_CURRENT
텍스처 인수는 전의 혼합 스테이지의 결과이다. 최초의 텍스처 스테이지 (스테이지 0)에서는, 이 인수는 D3DTA_DIFFUSE 와 같다. 전의 혼합 스테이지가 범프 맵 텍스처 (D3DTOP_BUMPENVMAP 처리)를 사용하고 있는 경우는, 범프 맵 텍스처의 전의 스테이지로부터 텍스처가 선택된다. s 가 현재의 텍스처 스테이지를 나타내,s - 1 에 범프 맵 텍스처가 있는 경우, 이 인수는 텍스처 스테이지 s - 2 로부터의 결과 출력이 된다. 읽고 쓰기가 허가된다.
D3DTA_DIFFUSE
텍스처 인수는, gouraud shading 처리중에 정점의 성분으로부터 보간 해 얻을 수 있던 디퓨즈색이다. 정점이 디퓨즈색을 포함하지 않는 경우의 디폴트색은 0xFFFFFFFF 이다. 허가는 읽기 전용이다.
D3DTA_SELECTMASK
모든 인수에 대응하는 마스크값. 텍스처 인수의 설정에는 사용하지 않는다. D3DTA_SPECULAR텍스처 인수는, gouraud shading 처리중에 정점의 성분으로부터 보간 된 스펙큐러색이다. 정점이 스펙큐러색을 포함하지 않은 경우, 디폴트색은 0xFFFFFFFF 이다. 허가는 읽기 전용이다.
D3DTA_TEMP
이 텍스처 인수는, 읽고 쓰기용의 임시 레지스터의 색이다. D3DTA_TEMP 는, D3DPMISCCAPS_TSSARGTEMP 장치 능력이 존재하는 경우에 지원 된다. 이 레지스터의 디폴트값은, (0.0, 0.0, 0.0, 0.0)이다. 허가는 읽고 쓰기이다.
D3DTA_TEXTURE
텍스처 인수는, 이 텍스처 스테이지의 텍스처 컬러이다. 허가는 읽기 전용이다. D3DTA_TFACTOR텍스처 인수는, 전회 D3DRENDERSTATETYPE 렌더링 스테이트값을 사용해 IDirect3DDevice9::SetRenderState 를 호출했을 때의 텍스처 계수 세트이다. 허가는 읽기 전용이다.
[사용 예시]
//-텍스쳐 스테이지간 합성
//[1]DirectX Sample 예제에서 사용
// MODULATE 연산으로 색을 섞는다.
g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
// TEXTURE의 색과 정점의 색(DIFFUSE)을 섞는다.
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );//첫번째 섞을 색은 텍스쳐색
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);//두번째 섞을 색은 정점색
// alpha 연산을 사용하지 않는다.
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_DISABLE );
//[2]뷰어에서 사용
//alpha 연산을 사용한다.
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_DISABLE );
g_pd3dDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);
g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
g_pd3dDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
g_pd3dDevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE);
g_pd3dDevice->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE);
g_pd3dDevice->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);
g_pd3dDevice->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_DISABLE);
텍스처 스테이지 스테이트 정의
http://telnet.or.kr/directx/graphics/reference/d3d/enums/d3dtexturestagestatetype.htm
D3DTEXTURESTAGESTATETYPE 열거형
D3DTEXTURESTAGESTATETYPE 열거형 텍스처 스테이지 스테이트를 정의한다. 구문 typedef enum _D3DTEXTURESTAGESTATETYPE { D3DTSS_COLOROP = 1, D3DTSS_COLORARG1 = 2, D3DTSS_COLORARG2 = 3, D3DTSS_ALPHAOP = 4,
telnet.or.kr
스테이지마다 텍스처 혼합 처리를 정의
http://telnet.or.kr/directx/graphics/reference/d3d/enums/d3dtextureop.htm
D3DTEXTUREOP 열거형
D3DTEXTUREOP 열거형 스테이지마다 텍스처 혼합 처리를 정의한다. 구문 typedef enum _D3DTEXTUREOP { D3DTOP_DISABLE = 1, D3DTOP_SELECTARG1 = 2, D3DTOP_SELECTARG2 = 3, D3DTOP_MODULATE = 4, D3DTOP_MO
telnet.or.kr
텍스처 인수 정수
http://telnet.or.kr/directx/graphics/reference/d3d/constants/d3dta.htm
D3DTA
D3DTA 텍스처 인수 정수 장치에 대응하는 각각의 텍스처 스테이지는 2 개의 텍스처 인수를 가질 수가 있어 이러한 인수는 텍스처의 색과 알파 채널에 영향을 준다. 텍스처 인수를 취득 또는 설정
telnet.or.kr