혼합 단계 만들기(Direct3D 9)
혼합 단계는 텍스처가 혼합되는 방법을 정의하는 텍스처 작업과 해당 인수의 집합입니다. 혼합 단계를 만들 때 C++ 애플리케이션은 IDirect3DDevice9::SetTextureStageState 메서드를 호출합니다. 첫 번째 호출은 수행되는 작업을 지정합니다. 두 개의 추가 호출은 작업이 적용되는 인수를 정의합니다. 다음 코드 예제에서는 혼합 단계의 생성을 보여 줍니다.
// This example assumes that lpD3DDev is a valid pointer to an
// IDirect3DDevice9 interface.
// Set the operation for the first texture.
d3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_ADD);
// Set argument 1 to the texture color.
d3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
// Set argument 2 to the iterated diffuse color.
d3dDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
텍스처의 텍셀 데이터에는 색 및 알파 값이 포함됩니다. 애플리케이션은 단일 혼합 단계에서 색 값과 알파 값 모두에 대해 별도의 작업을 정의할 수 있습니다. 각 연산, 색 및 알파에는 고유한 인수가 있습니다. 자세한 내용은 D3DTEXTURESTAGESTATETYPE을 참조하세요.
Direct3D API의 일부가 아니지만 다음 매크로를 애플리케이션에 삽입하여 텍스처 혼합 단계를 만드는 데 필요한 코드를 약어로 사용할 수 있습니다.
#define SetTextureColorStage( dev, i, arg1, op, arg2 ) \
dev->SetTextureStageState( i, D3DTSS_COLOROP, op); \
dev->SetTextureStageState( i, D3DTSS_COLORARG1, arg1 ); \
dev->SetTextureStageState( i, D3DTSS_COLORARG2, arg2 );
#define SetTextureAlphaStage( dev, i, arg1, op, arg2 ) \
dev->SetTextureStageState( i, D3DTSS_ALPHAOP, op); \
dev->SetTextureStageState( i, D3DTSS_ALPHAARG1, arg1 ); \
dev->SetTextureStageState( i D3DTSS_ALPHAARG2, arg2 );
관련 항목