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