다음을 통해 공유


혼합 단계 만들기(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 );

텍스처 혼합