我抓住了这个多窗口测试代码,将其更改为使用D3DXCreateTeapot
而不是D3DXLoadMeshFromX
(我找不到 teapot.x 文件),将调用移到EndScene
调用下方DrawText
并设置NUM_WINDOWS
为 1。通过这些细微的更改,测试工作并创建了两个窗口,每个都有它的茶壶。
我构建了测试并将其部署在一台机器上,该机器有一个板载 Intel HD Graphics GPU,有两个头,每个头都连接到一个监视器。然后我将一个窗口移动到每个监视器上,并放大两个窗口以占用每个监视器空间的大约 80%。
有了这个非常接近我的应用程序需要的设置,辅助监视器中的窗口总是太慢。如果我交换窗口,情况是一样的:辅助监视器中的那个开始爬行,并减慢整个系统的速度。
我四处搜索,一些消息来源(尽管已过时)指出,只有主显示器在不处于全屏模式时才能使用硬件加速。我不能使用全屏,因为我的应用程序中的 direct3d9 渲染是在嵌入在 Winforms GUI 中的用户控件内完成的。
在窗口模式下是否真的不可能为两个显示器获得硬件加速?我们应用程序的旧版本使用 MFC + DirectDraw 并设法执行得足够快,但这些都是过时的技术,我们讨厌回到那里。