D3DDDI_RESOURCEFLAGS 結構 (d3dukmdt.h)
D3DDDI_RESOURCEFLAGS 結構會識別在呼叫驅動程式的 CreateResource 函式中建立的資源類型。
語法
typedef struct _D3DDDI_RESOURCEFLAGS {
union {
struct {
UINT RenderTarget : 1;
UINT ZBuffer : 1;
UINT Dynamic : 1;
UINT HintStatic : 1;
UINT AutogenMipmap : 1;
UINT DMap : 1;
UINT WriteOnly : 1;
UINT NotLockable : 1;
UINT Points : 1;
UINT RtPatches : 1;
UINT NPatches : 1;
UINT SharedResource : 1;
UINT DiscardRenderTarget : 1;
UINT Video : 1;
UINT CaptureBuffer : 1;
UINT Primary : 1;
UINT Texture : 1;
UINT CubeMap : 1;
UINT Volume : 1;
UINT VertexBuffer : 1;
UINT IndexBuffer : 1;
UINT DecodeRenderTarget : 1;
UINT DecodeCompressedBuffer : 1;
UINT VideoProcessRenderTarget : 1;
UINT CpuOptimized : 1;
UINT MightDrawFromLocked : 1;
UINT Overlay : 1;
UINT MatchGdiPrimary : 1;
UINT InterlacedRefresh : 1;
UINT TextApi : 1;
UINT RestrictedContent : 1;
UINT RestrictSharedAccess : 1;
};
UINT Value;
};
} D3DDDI_RESOURCEFLAGS;
成員
RenderTarget
設定此成員相當於 (0x00000001) 設定 32 位 Value 成員的第一個位。
ZBuffer
指定表面是否為 z 緩衝區的 UINT 值。 z 緩衝區包含位深度資訊,可用來判斷哪些像素可見,以及哪些圖元會遮蔽。 z 緩衝區包含無法顯示的資訊。
設定此成員相當於 (0x00000002) 設定 32 位 Value 成員的第二個位。
Dynamic
UINT 值,指定介面是否經常更新。 這個位欄位旗標不能與 HintStatic 位欄位字段旗標搭配使用。
設定此成員相當於 (0x00000004) 設定 32 位 Value 成員的第三個位。
HintStatic
UINT 值,指定介面是否不常更新,但仍必須允許存取。 此位欄位旗標不能與 動態 位欄位旗標搭配使用。
設定此成員相當於 (0x00000008) 設定 32 位 Value 成員的第四個位。
AutogenMipmap
UINT 值,指定是否自動產生介面的 MIP 對應子層級。
設定此成員相當於設定 32 位 Value 成員的第五位 (0x00000010) 。
DMap
UINT 值,指定表面是否為位移地圖取樣器可以在鑲嵌單位中取樣的位移地圖紋理。
設定此成員相當於 (0x00000020) 設定 32 位 Value 成員的第六個位。
WriteOnly
UINT 值,指定介面是否只能寫入。 從表面讀取存取可能會產生一般保護錯誤, (GPF) 。 如果從中讀取表面,讀取結果就沒有意義。
設定此成員相當於設定 32 位 Value 成員的第七個位 (0x00000040) 。
NotLockable
UINT 值,指定轉譯目標是否可鎖定。 如果翻轉鏈結無法鎖定,或在無法鎖定的任何轉譯目標上,這個位字段旗標會在主要和後端緩衝區上設定。 然後,驅動程式可以執行背景優化。
即使已設定此旗標,仍可鎖定介面,因此驅動程式必須處理這種情況。 不過,這類鎖定不常發生,而且不預期速度很快。
驅動程式也可以藉由這個位字段旗標的存在來判斷深度或樣板緩衝區是否可鎖定。
設定此成員相當於設定 32 位 Value 成員的第八位 (0x00000080) 。
Points
UINT 值,指定介面是否包含可用於轉譯點和點 Sprite 的頂點緩衝區數據。
設定此成員相當於設定 32 位 Value 成員 (0x00000100) 的第九個位。
RtPatches
UINT 值,指定介面是否包含可用來呈現 rt-patch 的頂點緩衝區數據。
設定此成員相當於 (0x00000200) 設定 32 位 Value 成員的第十位。
NPatches
UINT 值,指定介面是否包含可用來呈現 n 修補程式的頂點緩衝區數據。
設定此成員相當於 (0x00000400) 設定 32 位 Value 成員的第十一位。
SharedResource
UINT 值,指定多個裝置和進程是否共用介面。
設定此成員相當於設定 32 位 Value 成員的第十二位 (0x00000800) 。
DiscardRenderTarget
UINT 值,指定是否需要保留表面。 如果介面做為轉譯目標使用,則不需要保留。
設定此成員相當於設定 32 位 Value 成員的第十三位 (0x00001000) 。
Video
UINT 值,指定表面是否為包含視訊數據的轉譯目標。
請注意,您可以使用這個旗標來建立數個轉譯目標,而且如果兩個或多個轉譯目標屬於相同的 Microsoft Direct3D 內容,驅動程式會判斷這些轉譯目標應該全部顯示相同的視訊數據流,而不論轉譯目標介面是否彼此附加。
設定此成員相當於設定 32 位 Value 成員的第十四位 (0x00002000) 。
CaptureBuffer
指定資源是否為擷取緩衝區的 UINT 值。
設定此成員相當於設定 32 位 Value 成員的第十五位 (0x00004000) 。
Primary
指定介面是否為主要介面的 UINT 值,也就是使用者目前是否可以看到介面。
設定此成員相當於設定 32 位 Value 成員的第十六位 (0x00008000) 。
Texture
UINT 值,指定介面是否可以當做紋理使用。
設定此成員相當於設定 32 位 Value 成員的第十七位 (0x00010000) 。
CubeMap
指定表面是否為立方環境地圖的 UINT 值。 此位欄位旗標需要設定 [紋理 位欄位字段] 旗標。
設定此成員相當於設定第 32 位 Value 成員的第十八位 (0x00020000) 。
Volume
UINT 值,指定表面是否具有深度,除了寬度和高度,也就是表面是否為磁碟區。 此位欄位旗標需要設定 [紋理 位欄位字段] 旗標。
設定此成員相當於設定第 32 位 Value 成員的第十九位 (0x00040000) 。
VertexBuffer
UINT 值,指定表面是否為頂點緩衝區 (,也就是儲存頂點) 。
設定此成員相當於設定 32 位 Value 成員的第二位 (0x00080000) 。
IndexBuffer
UINT 值,指定介面是否為索引緩衝區 (,也就是儲存索引) 。
設定此成員相當於設定 32 位 Value 成員的二十一位 (0x00100000) 。
DecodeRenderTarget
UINT 值,指定介面是否做為 Microsoft DirectX 影片加速的轉譯目標, (DirectX VA) 譯碼。
設定此成員相當於 (0x00200000) 設定 32 位 Value 成員的 22 秒位。
DecodeCompressedBuffer
UINT 值,指定介面是否包含 DirectX VA 譯碼的壓縮緩衝區資訊。
設定此成員相當於設定 32 位 Value 成員的二十三位 (0x00400000) 。
VideoProcessRenderTarget
UINT 值,指定介面是否做為 DirectX VA 視訊處理的轉譯目標。
設定此成員相當於設定 32 位 Value 成員的 24 位 (0x00800000) 。
CpuOptimized
UINT 值,指定 CPU 是否經常存取資源。
驅動程式應該將資源放在 CPU 可快速存取 (的記憶體集區中,例如 AGP 記憶體) 。 顯示迷你埠驅動程序應該在呼叫其 DxgkDdiCreateAllocation 函式時,在 DXGK_ALLOCATIONINFO 結構的 Flags 成員中設定 Cached 位字段旗標,將記憶體標示為可快取。
CpuOptimized 旗標通常會針對轉譯目標設定 (獨立轉譯目標和紋理) 。
設定此成員相當於設定 32 位 Value 成員的 25 位 (0x01000000) 。
MightDrawFromLocked
UINT 值,指定驅動程式是否可能要求從頂點緩衝區繪製,即使頂點緩衝區已由 Direct3D 運行時間鎖定也一樣。 此要求表示驅動程式有時可以接收其 DrawIndexedPrimitive、 DrawIndexedPrimitive2、 DrawPrimitive2、DrawPrimitive 和 DrawPrimitive2 函式的呼叫,其中頂點數據會在標示為 MightDrawFromLocked 的鎖定頂點緩衝區內參考。 運行時間必須在執行軟體轉換和光源 (而非硬體) 的情況下進行這些類型的呼叫。 這些案例通常不會發生。
不過,因為運行時間鎖定頂點緩衝區,所以驅動程式在呼叫 pfnRenderCb 函式之前,無法呼叫 pfnUnlockCb 函式。 因此,驅動程式必須支持系統或 AGP 記憶體區段中的頂點緩衝區;否則,視訊記憶體管理員會拒絕轉譯。 驅動程式不需要採取任何其他特殊動作,因為當硬體主動從頂點緩衝區轉譯時,運行時間不會覆寫鎖定頂點緩衝區中的任何數據。
設定此成員相當於設定 32 位 Value 成員的 26 位 (0x02000000) 。
Overlay
指定資源是否為重疊的 UINT 值。
設定此成員相當於設定 32 位 Value 成員的 27 位 (0x04000000) 。
MatchGdiPrimary
UINT 值,指定資源是否為符合使用 D3DKMDT_SHAREDPRIMARYSURFACEDATA 結構所建立之目前 GDI 主要介面的所有屬性的主要介面。 例如,從相符的主要介面翻轉至目前的 GDI 主要介面,反之亦然。
設定此成員相當於設定 32 位 Value 成員的二十八位 (0x08000000) 。
InterlacedRefresh
UINT 值,指定資源是否為要在交錯顯示模式中使用的主要介面。
設定此成員相當於設定 32 位 Value 成員的 29 位 (0x10000000) 。
TextApi
UINT 值,指定資源是否可用於紋理篩選或做為輸入數據流來源。 如果紋理是以 TextApi 位字段旗標集建立,則無法用於紋理篩選。 如果使用 TextApi 位字段旗標集建立頂點緩衝區,則它們無法當做輸入數據流來源使用。 必須針對呼叫 ComposeRects 函式時所使用的頂點緩衝區和來源介面指定 TextApi 位字段旗標。
設定此成員相當於設定 32 位 Value 成員的 32 位第 32 位位 (0x20000000) 。
RestrictedContent
Windows 7 和更新版本支援。
指定資源是否包含受保護內容的 UINT 值。 在大部分情況下,應用程式在應用程式建立受限制的資源之前,已明確啟用內容保護。 不過,如果應用程式建立受限制的全螢幕獨佔模式交換鏈,則不需要明確啟用內容保護。
設定此成員相當於設定 32 位 Value 成員 (0x40000000) 的第三十一個位。
RestrictSharedAccess
Windows 7 和更新版本支援。
UINT 值,指定運行時間是否只允許特定進程存取共用資源。
設定此成員相當於設定 32 位 Value 成員的 32 秒位 (0x80000000) 。
Value
識別要建立之資源類型的32位值。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。 |
標頭 | d3dukmdt.h (包括 D3dumddi.h、D3dkmddi.h) |