ID3D11DeviceContext::OMSetRenderTargets 方法 (d3d11.h)

將一或多個轉譯目標以不可部分完成的方式,並將深度樣板緩衝區系結至 輸出合併階段

語法

void OMSetRenderTargets(
  [in]           UINT                   NumViews,
  [in, optional] ID3D11RenderTargetView * const *ppRenderTargetViews,
  [in, optional] ID3D11DepthStencilView *pDepthStencilView
);

參數

[in] NumViews

類型: UINT

要系結 (範圍介於 0 到 D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT) 之間的轉譯目標數目。 如果此參數為非零, ppRenderTargetViews 指向的陣列中的項目數必須等於此參數中的數位。

[in, optional] ppRenderTargetViews

類型: ID3D11RenderTargetView*

ID3D11RenderTargetView 數位列的指標,代表要系結至裝置的轉譯目標。 如果此參數為 NULLNumViews 為 0,則不會繫結轉譯目標。

[in, optional] pDepthStencilView

類型: ID3D11DepthStencilView*

ID3D11DepthStencilView 的指標,代表要系結至裝置的深度樣板檢視。 如果此參數為 NULL,則深度樣板檢視不會繫結。

傳回值

備註

裝置在任何指定時間可以有作用中的轉譯目標數目上限,是由名為 D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT 的 D3D11.h 中的 #define 所設定。 嘗試將相同的子資源設定為多個轉譯目標位置無效。 此呼叫未定義的任何轉譯目標都設定為 NULL

如果目前也系結任何子資源以在不同的階段讀取,或可能在不同的管線) 寫入 (,這些系結點將會設定為 NULL,以防止在單一轉譯作業中同時讀取和寫入相同的子資源。

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

如果轉譯目標檢視是從數位資源類型建立,則所有轉譯目標檢視都必須具有相同的數位大小。
這項限制也適用於深度樣板檢視,其數位大小必須符合所系結的轉譯目標檢視。

圖元著色器必須能夠同時轉譯為至少八個不同的轉譯目標。 所有這些轉譯目標都必須存取相同類型的資源:BufferTexture1D、Texture1DArrayTexture2DTexture2D、Texture2D、Texture3DTextureCube。 所有轉譯目標在寬度和高度 (的所有維度中都必須具有相同的大小,以及 *數位類型) 的 3D 或數位大小的深度。 如果轉譯目標使用多重取樣反別名,則所有系結的轉譯目標和深度緩衝區都必須是相同形式的多重取樣資源 (亦即,樣本計數必須是相同的) 。 每個轉譯目標都可以有不同的數據格式。 這些轉譯目標格式不需要有相同的每個元素位計數。

轉譯目標八個位置的任何組合都可以設定轉譯目標集或未設定。

相同的資源檢視無法同時系結至多個轉譯目標位置。 不過,您可以將單一資源的多個非重疊資源檢視設定為同時有多個轉譯目標。

請注意,不同於 Direct3D 中的一些其他資源方法,所有目前系結的轉譯目標都會藉由呼叫 OMSetRenderTargets(0, nullptr, nullptr);來解除系結。

規格需求

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

另請參閱

ID3D11DeviceContext