在 DirectX 10 应用程序中,在全屏模式和窗口模式之间切换是否会产生任何类型的开销,例如必须重新创建纹理和/或顶点缓冲区?
换句话说,我是否可以构建一个应用程序,该应用程序旨在在窗口模式和全屏模式之间进行“大量”切换,而不必在切换发生时对性能造成影响?
在 DirectX 10 应用程序中,在全屏模式和窗口模式之间切换是否会产生任何类型的开销,例如必须重新创建纹理和/或顶点缓冲区?
换句话说,我是否可以构建一个应用程序,该应用程序旨在在窗口模式和全屏模式之间进行“大量”切换,而不必在切换发生时对性能造成影响?
在 DirectX10 中有 DXGI。您使用交换链。交换链的缓冲区需要调整大小,所以会有一些开销(当然),但它应该是优化的。我担心的是通过切换视图模式导致用户癫痫发作。
http://msdn.microsoft.com/en-us/library/bb205075(VS.85).aspx
在 D3D10 中,您无需在模式切换时重新创建纹理、缓冲区或任何 D3D 资源。一个值得注意的例外是在 ResizeBuffers 调用之后需要更新交换链后缓冲引用(应该这样做以获得最佳的全屏性能),但就性能而言,这并不是什么大问题。
不过,这并不意味着改变模式很便宜。模式更改操作本身对于您的应用程序和系统的其余部分来说都是非常昂贵的(特别是在 Vista 中,需要重新启动 DWM)。Win7改进了很多,所以我建议你玩一下,看看它是否满足你的性能要求,但不要指望立即过渡。