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
표면이 z 버퍼인지 여부를 지정하는 UINT 값입니다. z 버퍼에는 표시되는 픽셀과 가려지는 픽셀을 결정하는 데 사용되는 비트 깊이 정보가 포함되어 있습니다. z 버퍼에는 표시할 수 없는 정보가 포함되어 있습니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000002)의 두 번째 비트를 설정하는 것과 같습니다.
Dynamic
표면이 자주 업데이트되는지 여부를 지정하는 UINT 값입니다. 이 비트 필드 플래그는 HintStatic 비트 필드 플래그와 함께 사용할 수 없습니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000004)의 세 번째 비트를 설정하는 것과 같습니다.
HintStatic
표면이 자주 업데이트되지 않지만 액세스를 허용해야 하는지 여부를 지정하는 UINT 값입니다. 이 비트 필드 플래그는 동적 비트 필드 플래그와 함께 사용할 수 없습니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000008)의 네 번째 비트를 설정하는 것과 같습니다.
AutogenMipmap
표면에 대한 MIP 맵 구부러기가 자동으로 생성되는지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000010)의 다섯 번째 비트를 설정하는 것과 같습니다.
DMap
표면이 변위 맵 샘플러가 테셀레이션 단위에서 샘플링할 수 있는 변위 맵 텍스처인지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000020)의 여섯 번째 비트를 설정하는 것과 같습니다.
WriteOnly
표면만 쓸 수 있는지 여부를 지정하는 UINT 값입니다. 표면에서 읽기 액세스하면 GPF(일반 보호 오류)가 생성될 수 있습니다. 표면을 읽는 경우 읽기 결과는 의미가 없습니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000040)의 일곱 번째 비트를 설정하는 것과 같습니다.
NotLockable
렌더링 대상을 잠글 수 있는지 여부를 지정하는 UINT 값입니다. 이 비트 필드 플래그는 대칭 이동 체인을 잠글 수 없거나 잠글 수 없는 렌더링 대상에서 기본 및 백 버퍼에 설정됩니다. 그런 다음 드라이버는 백그라운드 최적화를 수행할 수 있습니다.
이 플래그가 설정되더라도 표면을 잠글 수 있으므로 드라이버는 이 상황을 처리해야 합니다. 그러나 이러한 잠금은 자주 사용되지 않으며 빠르지 않을 것으로 예상됩니다.
또한 드라이버는 이 비트 필드 플래그의 존재로 깊이 또는 스텐실 버퍼를 잠글 수 있는지 여부를 확인할 수 있습니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000080)의 여덟 번째 비트를 설정하는 것과 같습니다.
Points
표면에 점 및 점 스프라이트를 렌더링하는 데 사용할 수 있는 꼭짓점 버퍼 데이터가 포함되어 있는지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000100)의 9번째 비트를 설정하는 것과 같습니다.
RtPatches
표면에 rt-patches를 렌더링하는 데 사용할 수 있는 꼭짓점 버퍼 데이터가 포함되어 있는지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000200)의 10번째 비트를 설정하는 것과 같습니다.
NPatches
표면에 n 패치를 렌더링하는 데 사용할 수 있는 꼭짓점 버퍼 데이터가 포함되어 있는지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000400)의 11번째 비트를 설정하는 것과 같습니다.
SharedResource
여러 디바이스 및 프로세스가 표면을 공유하는지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00000800)의 12번째 비트를 설정하는 것과 같습니다.
DiscardRenderTarget
표면 보존이 필요한지 여부를 지정하는 UINT 값입니다. 표면이 렌더링 대상으로 사용되는 경우 표면을 보존할 필요가 없습니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00001000)의 13번째 비트를 설정하는 것과 같습니다.
Video
화면이 비디오 데이터를 포함하는 렌더링 대상인지 여부를 지정하는 UINT 값입니다.
이 플래그를 사용하여 여러 렌더링 대상을 만들 수 있으며 이러한 렌더링 대상 중 두 개 이상이 동일한 Microsoft Direct3D 컨텍스트에 속하는 경우 드라이버는 렌더링 대상 표면이 서로 연결되어 있는지 여부에 관계없이 이러한 렌더링 대상이 모두 동일한 비디오 스트림을 표시해야 한다고 결정합니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00002000)의 14번째 비트를 설정하는 것과 같습니다.
CaptureBuffer
리소스가 캡처 버퍼인지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00004000)의 15번째 비트를 설정하는 것과 같습니다.
Primary
표면이 기본 표면인지, 즉 현재 사용자에게 표면이 표시되는지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 값 멤버(0x00008000)의 16번째 비트를 설정하는 것과 같습니다.
Texture
표면을 텍스처로 사용할 수 있는지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00010000)의 17번째 비트를 설정하는 것과 같습니다.
CubeMap
표면이 입방 환경 맵인지 여부를 지정하는 UINT 값입니다. 이 비트 필드 플래그를 사용하려면 텍스처 비트 필드 플래그를 설정해야 합니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00020000)의 18번째 비트를 설정하는 것과 같습니다.
Volume
너비와 높이 외에도 표면에 깊이가 있는지, 즉 표면이 볼륨인지 여부를 지정하는 UINT 값입니다. 이 비트 필드 플래그를 사용하려면 텍스처 비트 필드 플래그를 설정해야 합니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00040000)의 19번째 비트를 설정하는 것과 같습니다.
VertexBuffer
표면이 꼭짓점 버퍼인지(즉, 꼭짓점을 저장하는지) 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00080000)의 20번째 비트를 설정하는 것과 같습니다.
IndexBuffer
표면이 인덱스 버퍼인지(즉, 인덱스를 저장하는지) 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00100000)의 21비트 설정과 같습니다.
DecodeRenderTarget
Surface가 DirectX VA(Microsoft DirectX Video Acceleration) 디코딩의 렌더링 대상으로 사용되는지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00200000)의 22초 비트를 설정하는 것과 같습니다.
DecodeCompressedBuffer
Surface에 DirectX VA 디코딩에 대한 압축 버퍼 정보가 포함되어 있는지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00400000)의 23번째 비트를 설정하는 것과 같습니다.
VideoProcessRenderTarget
Surface가 DirectX VA 비디오 처리의 렌더링 대상으로 사용되는지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x00800000)의 24번째 비트를 설정하는 것과 같습니다.
CpuOptimized
CPU가 리소스에 자주 액세스하는지 여부를 지정하는 UINT 값입니다.
드라이버는 CPU가 빠르게 액세스할 수 있는 메모리 풀(예: AGP 메모리)에 리소스를 배치해야 합니다. 디스플레이 미니포트 드라이버는 DxgkDdiCreateAllocation 함수가 호출될 때 DXGK_ALLOCATIONINFO 구조체의 Flags 멤버에서 캐시된 비트 필드 플래그를 설정하여 메모리에 캐시 가능으로 플래그를 지정해야 합니다.
CpuOptimized 플래그는 일반적으로 렌더링 대상(독립 실행형 렌더링 대상 및 텍스처 모두)에 대해 설정됩니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x01000000)의 25번째 비트를 설정하는 것과 같습니다.
MightDrawFromLocked
Direct3D 런타임에 의해 꼭짓점 버퍼가 잠겨 있는 경우에도 드라이버가 꼭짓점 버퍼에서 그리도록 요청될 수 있는지 여부를 지정하는 UINT 값입니다. 이 요청은 경우에 따라 드라이버가 Vertex 데이터가 MightDrawFromLocked로 표시된 잠긴 꼭짓점 버퍼 내에서 참조되는 DrawIndexedPrimitive, DrawIndexedPrimitive2, DrawPrimitive 및 DrawPrimitive2 함수에 대한 호출을 받을 수 있음을 의미합니다. 런타임은 하드웨어가 아닌 소프트웨어 변환 및 조명을 수행하는 시나리오에서 이러한 유형의 호출을 수행해야 합니다. 이러한 시나리오는 일반적으로 발생하지 않습니다.
그러나 런타임이 꼭짓점 버퍼를 잠갔기 때문에 드라이버는 pfnRenderCb 함수를 호출하기 전에 pfnUnlockCb 함수를 호출할 수 없습니다. 따라서 드라이버는 시스템 또는 AGP 메모리 세그먼트에서 꼭짓점 버퍼를 지원해야 합니다. 그렇지 않으면 비디오 메모리 관리자가 렌더링을 거부합니다. 하드웨어가 꼭짓점 버퍼에서 적극적으로 렌더링될 때 런타임이 잠긴 꼭짓점 버퍼의 데이터를 덮어쓰지 않기 때문에 드라이버는 다른 특별한 작업을 수행할 필요가 없습니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x02000000)의 26번째 비트를 설정하는 것과 같습니다.
Overlay
리소스가 오버레이인지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x04000000)의 27번째 비트를 설정하는 것과 같습니다.
MatchGdiPrimary
리소스가 D3DKMDT_SHAREDPRIMARYSURFACEDATA 구조를 사용하여 만든 현재 GDI 기본 표면의 모든 속성과 일치하는 기본 표면인지 여부를 지정하는 UINT 값입니다. 예를 들어 일치하는 기본 표면에서 현재 GDI 기본 표면으로 대칭 이동하거나 그 반대로 전환할 수 있습니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x08000000)의 28번째 비트를 설정하는 것과 같습니다.
InterlacedRefresh
리소스가 인터레이스 표시 모드에서 사용되는 기본 표면인지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x10000000)의 29번째 비트를 설정하는 것과 같습니다.
TextApi
리소스를 텍스처 필터링에 사용할 수 있는지 또는 입력 스트림 원본으로 사용할 수 있는지 여부를 지정하는 UINT 값입니다. TextApi 비트 필드 플래그 집합을 사용하여 텍스처를 만드는 경우 텍스처 필터링에 사용할 수 없습니다. TextApi 비트 필드 플래그 집합을 사용하여 꼭짓점 버퍼를 만드는 경우 입력 스트림 원본으로 사용할 수 없습니다. ComposeRects 함수 호출에 사용되는 꼭짓점 버퍼 및 원본 표면에 대해 TextApi 비트 필드 플래그를 지정해야 합니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x20000000)의 30번째 비트를 설정하는 것과 같습니다.
RestrictedContent
Windows 7 이상 버전에서 지원됩니다.
리소스에 보호된 콘텐츠가 포함되어 있는지 여부를 지정하는 UINT 값입니다. 대부분의 경우 애플리케이션이 제한된 리소스를 만들기 전에 명시적으로 콘텐츠 보호를 사용하도록 설정했습니다. 그러나 애플리케이션은 제한된 전체 화면 전용 모드 스왑 체인을 만드는 경우 콘텐츠 보호를 명시적으로 사용하도록 설정할 필요가 없습니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x40000000)의 31비트 설정과 같습니다.
RestrictSharedAccess
Windows 7 이상 버전에서 지원됩니다.
런타임에서 공유 리소스에 대한 특정 프로세스 액세스만 허용하는지 여부를 지정하는 UINT 값입니다.
이 멤버를 설정하는 것은 32비트 Value 멤버(0x80000000)의 30초 비트를 설정하는 것과 같습니다.
Value
만들 리소스의 유형을 식별하는 32비트 값입니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다. |
머리글 | d3dukmdt.h(D3dumddi.h, D3dkmddi.h 포함) |