1

我继承了一个使用 D3D9 在监视器 #2 上全屏显示图形的应用程序。该应用程序可以在配备 GeForce 9500 GT 的台式机上正常运行。当我尝试让应用程序在配备板载英特尔高清显卡的笔记本电脑上运行时,所有显卡均未显示。顶点缓冲区之一被绘制,但其余为黑色。

我对 D3D 不是很熟悉,所以我不确定从哪里开始调试这个问题。我一直在做一些搜索,但无法打开任何东西。

更新:

仅使用 2 个三角形绘制简单的顶点缓冲区是可行的,但任何更复杂的都不能。

4

2 回答 2

1

我的直觉可能是给定 GPU 支持的着色器模型。通常,最好查询 gfx 卡以查看它可以支持什么。

也有可能是特定的 D3D API 功能——在 GeForce 和 ATI(AMD) 之间切换时你会看到更多,但当然也可能是英特尔作为自己的供应商;但我会从查询支持的着色器开始。

对于 D3D9,您使用 IDirect3D9::GetDeviceCaps 来查询 gfx 设备。

链接:在此处发布:https ://gamedev.stackexchange.com/questions/22705/how-can-i-check-for-shader-model-3-support

http://msdn.microsoft.com/en-us/library/bb509626%28VS.85%29.aspx

DirectX 还提供为给定设备级别创建功能的功能:http: //msdn.microsoft.com/en-us/library/windows/desktop/ff476876%28v=vs.85%29.aspx

于 2012-05-09T15:49:02.713 回答
0

解决方案#1:

检查每个 D3D9 调用的每个错误代码。使用DXGetErrorString9andDXGetErrorDescription9获取错误代码的可读翻译。有关详细信息,请参阅 DirectX 文档。当您最终遇到一个返回值以外的调用时,D3D_OK请查看该调用的 DirectX 文档。

解决方案#2:

安装调试 DirectX 驱动程序(应包含在 DirectX SDK 中),在运行时检查调试消息进程输出(使用 OutputDebugMessage 打印消息,因此您只能在调试器/IDE 中看到)。使用高调试设置,您将看到应用程序中的每一个问题。

于 2012-05-09T15:56:38.203 回答