D3DPRESENTFLAG

D3DPRESENT_PARAMETERS 使用的常量。

#define 说明
D3DPRESENTFLAG_DEVICECLIP 0x00000004 在创建 Direct3D 设备的视频适配器的监视器屏幕区域中,将窗口化 Present 位块传送剪辑到窗口工作区。 D3DPRESENTFLAG_DEVICECLIP 对 D3DSWAPEFFECT_FLIPEX 无效。
D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL 0x00000002 创建设备或交换链以启用 z 缓冲区丢弃时,设置此标志。 如果设置了此标志,则在使用不同的深度曲面调用 PresentSetDepthStencilSurface 后,深度模具缓冲区的内容将无效。 丢弃 z 缓冲区数据可以提高性能,并且取决于驱动程序。 调试运行时将通过使用不同的深度曲面调用 PresentSetDepthStencilSurface,将 z 缓冲区清除为某些常量值来强制实施丢弃。
对于所有可锁定格式、D3DFMT_D16_LOCKABLE 和 D3DFMT_D32F_LOCKABLE,丢弃 z 缓冲区数据是非法的。 使用 CreateDevice 指定可锁定格式和 z 缓冲区丢弃的任何操作都将失败。 有关格式的详细信息,请参阅 D3DFORMAT
D3DPRESENTFLAG_LOCKABLE_BACKBUFFER 0x00000001 如果应用程序需要直接锁定后台缓冲区,请设置此标志。 请注意,除非应用程序在调用 CreateDeviceReset 时指定 D3DPRESENTFLAG_LOCKABLE_BACKBUFFER,否则后台缓冲区不可锁定。 可锁定的后台缓冲区在某些图形硬件配置上会产生性能成本。 在可锁定的后退缓冲区上执行锁定操作(或使用 UpdateSurface 写入)可降低许多卡的性能。 在这种情况下,请考虑使用纹理三角形将数据移动到后台缓冲区。
Direct3D 9 和 Direct3D 9Ex 之间的差异:
在 Direct3D9Ex 中,如果 D3DSWAPEFFECT 为 D3DSWAPEFFECT_FLIPEX,则无法设置此标志,因为翻转模型使桌面窗口管理器能够访问应用程序的后台缓冲区。 不应锁定跨进程共享曲面。

 

D3DPRESENTFLAG_NOAUTOROTATE 0x00000020 在呈现期间,旋转的监视器自动使用旋转副本进行处理,这并不十分高效。 此标志意味着应用程序将执行它自己的显示旋转。
Direct3D 9 和 Direct3D 9Ex 之间的差异:
此标志仅在 Direct3D 9Ex 中可用。

 

应用程序可以使用旋转视图矩阵实现自己的旋转。 方法 GetDisplayModeExGetAdapterDisplayModeEx 应用于查找当前旋转设置。 CreateDeviceExResetEx 中的后台缓冲区 Width 和 Height 参数必须使用横向方向,而全屏显示模式结构应与从 EnumAdapterModesEx 返回的内容相同(例如,旋转 90 度和 270 度时,Width 和 Height 会交换)。

在旋转的呈现器目标上使用 Lock 时,左上角假设不再为 true,呈现器目标 SURFACE_DESC 将保持横向(如创建参数所暗示),并且在与 Direct3D 呈现器目标和场景一起使用时,GDI 窗口、鼠标坐标等需要正确转换。

D3DPRESENTFLAG_UNPRUNEDMODE 0x00000040 使用此标志可指定显示适配器枚举的任何 RAW 显示模式,即使 Direct3D 可能指示模式无效。 如果所需模式确实无效,应用程序应以可靠的方式实现此目标。
Direct3D 9 和 Direct3D 9Ex 之间的差异:
此标志仅在 Direct3D 9Ex 中可用。

 

D3DPRESENTFLAG_VIDEO 0x00000010 这是驱动程序的提示,即后台缓冲区将包含视频数据。
D3DPRESENTFLAG_OVERLAY_LIMITEDRGB 0x00000080 指定覆盖是全范围 RGB 还是有限范围的 RGB。 设置此标志表示有限范围的 RGB。 在有限范围的 RGB 中,RGB 范围经过压缩,使 16:16:16 为黑色,235:235:235 为白色。
Direct3D 9 和 Direct3D 9Ex 之间的差异:
此标志仅在 Direct3D 9Ex 中可用。

 

D3DPRESENTFLAG_OVERLAY_YCbCr_BT709 0x00000100 指定覆盖是 BT.601 还是 BT.709。 对于高清电视 (HDTV),设置此标志表示 BT.709。
Direct3D 9 和 Direct3D 9Ex 之间的差异:
此标志仅在 Direct3D 9Ex 中可用。

 

D3DPRESENTFLAG_OVERLAY_YCbCr_xvYCC 0x00000200 指定覆盖是传统的 YCbCr 还是扩展的 YCbCr (xvYCC)。 设置此标志指示扩展的 YCbCr (xvYCC)。
Direct3D 9 和 Direct3D 9Ex 之间的差异:
此标志仅在 Direct3D 9Ex 中可用。

 

D3DPRESENTFLAG_RESTRICTED_CONTENT 0x00000400 设置此标志表示交换链包含受保护的内容,并自动导致运行时限制对交换链的访问,以便只有桌面窗口管理器 (DWM) 可以使用交换链。
Direct3D 9 和 Direct3D 9Ex 之间的差异:
此标志仅在 Direct3D 9Ex 中可用。

 

D3DPRESENTFLAG_RESTRICT_SHARED_RESOURCE_DRIVER 0x00000800 设置此标志表示驱动程序应限制对为 DWM 交互创建的任何共享资源的访问。 调用方必须使用驱动程序创建经过身份验证的通道。 然后,驱动程序应允许访问尝试打开这些共享资源的进程。
Direct3D 9 和 Direct3D 9Ex 之间的差异:
此标志仅在 Direct3D 9Ex 中可用。

 

 

这些常量由 D3DPRESENT_PARAMETERS 使用。

常量信息

要求
标头 d3d9types.h
最低操作系统 Windows 98

 

Direct3D 常量