D3dCreateSurfaceEx 和后备图面

D3dCreateSurfaceEx 也可用于作为托管图面的系统内存持久副本的 后备面。 这样,驱动程序便可为表面分配驱动程序端结构,并对系统到视频纹理下载的 D3DDP2OP_TEXBLT 令牌做出响应。

D3dCreateSurfaceEx 应永远不会基于所请求的后备 surface 的格式和功能失败,因为模拟代码可以支持和处理图面。 但是,其他失败条件是有效的。 例如,如果驱动程序维护专用数据结构并且内存空间不足,驱动程序可能会 D3dCreateSurfaceEx

对于不支持像素格式的后备 surface 格式,驱动程序不应 D3dCreateSurfaceEx 。 可以创建此类面,以便与软件光栅程序结合使用。 驱动程序只应忽略它不支持的支持面。 (或者,驱动程序可以创建驱动程序端结构,但不会随后将相应的句柄发送到驱动程序。 )

对于这些后备面, D3dCreateSurfaceEx 会导致错误代码传播到应用程序;然后,驱动程序可能会在仅模拟模式下影响应用程序。 驱动程序对此类情况的响应可以通过运行位于 DirectX 7.0 SDK 上的 ddtest.exe 应用程序进行测试。 运行 ddtest.exe ,尝试创建驱动程序不支持的格式的后备 surface 纹理,但 directdraw 仿真层支持 (这些格式的列表,可在 directdraw SDK 文档) 中找到。