D3DCREATE

控制设备创建行为的一个或多个标志的组合。

#define 描述
D3DCREATE_ADAPTERGROUP_DEVICE 应用程序要求设备驱动此主适配器拥有的所有头。 该标志在非主适配器上是非法的。 如果设置了此标志,则传递给 CreateDevice 的演示文稿参数应指向 D3DPRESENT_PARAMETERS数组。 D3DPRESENT_PARAMETERS 中的元素数应等于 D3DCAPS9 结构的 NumberOfAdaptersInGroup 成员定义的适配器数。 DirectX 运行时将按 D3DCAPS9的 AdapterOrdinalInGroup 成员指定的数字顺序将每个元素分配给每个头。
D3DCREATE_DISABLE_DRIVER_MANAGEMENT Direct3D 将管理资源,而不是驱动程序。 对于资源错误(如视频内存不足),Direct3D 调用不会失败。
D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX 与D3DCREATE_DISABLE_DRIVER_MANAGEMENT一样,Direct3D 将管理资源而不是驱动程序。 与D3DCREATE_DISABLE_DRIVER_MANAGEMENT不同,D3DCREATE_DISABLE_DRIVER_MANAGEMENT_EX将返回诸如视频内存不足等条件的错误。
D3DCREATE_DISABLE_PRINTSCREEN 使运行时不为 Printscreen 注册热键,Ctrl-Printscreen 和 Alt-Printscreen 捕获桌面或窗口内容。
Direct3D 9 和 Direct3D 9Ex 之间的差异:
此标志仅在 Direct3D 9Ex 中可用。

 

D3DCREATE_DISABLE_PSGP_THREADING 将计算限制为主应用程序线程。 如果未设置标志,运行时可能会在工作线程中执行软件顶点处理和其他计算,以提高多处理器系统上的性能。
Windows XP 和 Windows Vista 之间的差异:
此标志在 Windows Vista、Windows Server 2008 和 Windows 7 上可用。

 

D3DCREATE_ENABLE_PRESENTSTATS 启用设备上当前统计信息的收集。 调用 GetPresentStatistics 将返回有效数据。
Direct3D 9 和 Direct3D 9Ex 之间的差异:
此标志仅在 Direct3D 9Ex 中可用。

 

D3DCREATE_FPU_PRESERVE 将 Direct3D 浮点计算的精度设置为调用线程使用的精度。 如果未指定此标志,则 Direct3D 默认为单精度舍入到最接近模式,原因有两个:
  • 双精度模式将降低 Direct3D 性能。
  • Direct3D 的部分假设浮点单元异常被屏蔽;取消屏蔽这些异常可能会导致未定义的行为。
D3DCREATE_HARDWARE_VERTEXPROCESSING 指定硬件顶点处理。
D3DCREATE_MIXED_VERTEXPROCESSING 指定混合(软件和硬件)顶点处理。 对于 Windows 10 版本 1607 及更高版本,不建议使用此设置。 请参阅D3DCREATE_SOFTWARE_VERTEXPROCESSING。
D3DCREATE_SOFTWARE_VERTEXPROCESSING 指定软件顶点处理。 对于 Windows 10 版本 1607 及更高版本,不建议使用此设置。 使用D3DCREATE_HARDWARE_VERTEXPROCESSING。

注意:
除非硬件顶点处理不可用,否则不建议在 Windows 10 版本 1607(及更高版本)中使用软件顶点处理,因为软件顶点处理的效率显著减少,同时提高了实现的安全性。

 
D3DCREATE_MULTITHREADED 指示应用程序请求 Direct3D 是多线程安全的。 这使得 Direct3D 线程更频繁地拥有其全局 关键部分,这可能会降低性能。 如果应用程序在一个线程中处理窗口消息,同时在另一个线程中调用 Direct3D API,则应用程序在创建设备时必须使用此标志。 在卸载 d3d9.dll之前,还必须销毁此窗口。
D3DCREATE_NOWINDOWCHANGES 指示 Direct3D 不能以任何方式更改焦点窗口。

注意:
如果设置了此标志,应用程序必须完全支持所有焦点管理事件,例如 Alt+TAB 和鼠标单击事件。

 
D3DCREATE_PUREDEVICE 指定 Direct3D 不支持对可存储在状态块中的任何内容进行 Get* 调用。 它还告知 Direct3D 不为顶点处理提供任何仿真服务。 这意味着,如果设备不支持顶点处理,则应用程序只能使用转换后的顶点。
D3DCREATE_SCREENSAVER 允许在全屏应用程序期间使用屏幕保护程序。 如果没有此标志,只要调用应用程序全屏,Direct3D 就会禁用屏幕保护器。 如果调用应用程序已是屏幕保护程序,则此标志不起作用。
Direct3D 9 和 Direct3D 9Ex 之间的差异:
此标志仅在 Direct3D 9Ex 中可用。

 

 

D3DCREATE_HARDWARE_VERTEXPROCESSING、D3DCREATE_MIXED_VERTEXPROCESSING和D3DCREATE_SOFTWARE_VERTEXPROCESSING是相互排斥的标志。 调用 createDevice时,必须至少指定其中一个顶点处理标志。

常量信息

要求 价值
页眉 D3D9.h
最低作系统 Windows 98

 

Direct3D 常量