我继承了一个使用D3D9在显示器#2上全屏显示图形的应用程序。该应用程序可在带有GeForce 9500 GT的台式机上正常运行。当我尝试在配备板载Intel HD Graphics的笔记本电脑上运行应用程序时,不会显示所有图形。绘制了一个顶点缓冲区,但其余的都是黑色。
我对D3D不是很熟悉,所以我不知道从哪里开始调试这个问题。我一直在做一些搜索,但一直无法改变。
更新
只使用2个三角形绘制简单的顶点缓冲区,但任何更复杂的顶点都不起作用。
答案 0 :(得分: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
答案 1 :(得分:0)
解决方案#1:
检查每个D3D9呼叫的每个错误代码。使用DXGetErrorString9
和DXGetErrorDescription9
来获取错误代码的人工可读翻译。有关详细信息,请参阅DirectX文档。当您最终遇到一个返回D3D_OK
之外的其他内容的调用时,请调查该调用的DirectX文档。
解决方案#2:
安装调试DirectX驱动程序(应该包含在DirectX SDK中),在运行时检查调试消息处理输出(使用OutputDebugMessage打印消息,因此您只能在调试器/ IDE中看到)。通过高调试设置,您可以查看应用中的每个问题。