ID3D11DeviceContext::OMSetBlendState 方法 (d3d11.h)

設定輸出合併階段的混合狀態。

語法

void OMSetBlendState(
  [in, optional] ID3D11BlendState *pBlendState,
  [in, optional] const FLOAT [4]  BlendFactor,
  [in]           UINT             SampleMask
);

參數

[in, optional] pBlendState

類型: ID3D11BlendState*

混合狀態介面的指標 (請參閱 ID3D11BlendState) 。 傳遞 預設 混合狀態的NULL。 如需默認混合狀態的詳細資訊,請參閱。

[in, optional] BlendFactor

類型: const FLOAT[4]

混合因數的數位,每個 RGBA 元件各一個。 混合因數會調整圖元著色器、轉譯目標或兩者的值。 如果您使用 D3D11_BLEND_BLEND_FACTORD3D11_BLEND_INV_BLEND_FACTOR建立混合狀態物件,混合階段會使用混合因數的非 NULL 陣列。 如果您未使用 D3D11_BLEND_BLEND_FACTORD3D11_BLEND_INV_BLEND_FACTOR建立混合狀態物件,混合階段不會使用混合因數的非 NULL 陣列;運行時間會儲存混合因數,您稍後可以呼叫 ID3D11DeviceContext::OMGetBlendState 來擷取混合因數。 如果您傳遞 NULL,運行時間會使用或儲存等於 { 1, 1, 1, 1 } 的混合因數。

[in] SampleMask

類型: UINT

32 位範例涵蓋範圍。 預設值為 0xffffffff。 請參閱<備註>。

傳回值

備註

混合狀態是由 輸出合併階段 用來判斷如何將兩個 RGB 像素值和兩個 Alpha 值混合在一起。 兩個 RGB 像素值和兩個 Alpha 值是圖元著色器輸出的 RGB 像素值和 Alpha 值,以及輸出轉譯目標中已經有的 RGB 像素值和 Alpha 值。 混合選項可控制混合階段用來調整圖元著色器、轉譯目標或兩者的值數據源。 混合作業會控制混合階段如何以數學方式結合這些調色值。

若要建立混合狀態介面,請呼叫 ID3D11Device::CreateBlendState

傳遞混合狀態介面的 NULL 表示運行時間設定預設混合狀態。 下表指出預設混合參數。

狀態 預設值
AlphaToCoverageEnable FALSE
IndependentBlendEnable FALSE
RenderTarget[0]。BlendEnable FALSE
RenderTarget[0]。SrcBlend D3D11_BLEND_ONE
RenderTarget[0]。DestBlend D3D11_BLEND_ZERO
RenderTarget[0]。BlendOp D3D11_BLEND_OP_ADD
RenderTarget[0]。SrcBlendAlpha D3D11_BLEND_ONE
RenderTarget[0]。DestBlendAlpha D3D11_BLEND_ZERO
RenderTarget[0]。BlendOpAlpha D3D11_BLEND_OP_ADD
RenderTarget[0]。RenderTargetWriteMask D3D11_COLOR_WRITE_ENABLE_ALL
 

範例遮罩會決定所有作用中轉譯目標中更新的樣本。 範例遮罩中的位對應至多重取樣轉譯目標中的樣本是個別應用程式的責任。 一律會套用範例遮罩;它與是否啟用多重取樣無關,而且不取決於應用程式是否使用多重取樣轉譯目標。

方法會保存傳入之介面的參考。 這與 Direct3D 10 中的裝置狀態行為不同。

規格需求

需求
目標平台 Windows
標頭 d3d11.h
程式庫 D3D11.lib

另請參閱

ID3D11DeviceContext