更新1: 我已经尝试了相同教程的c ++源代码,并在笔记本电脑上运行良好。
更新2: 我咬紧牙关,决定用c ++来处理这个项目。到目前为止,C#版本中的所有内容在c ++版本中都能正常运行。我无法解决或解决我的问题。
我正在使用SharpDX包装器开发一个小型DirectX项目。我正在使用VS2015社区版,我也在运行Windows 10.我一直在关注这些教程(请参阅回复评论#1),特别是这里找到的教程的C#转换(请参阅回复评论#2)。我没有10个代表,所以我只能发布2个链接......
我已按照教程生成地形,如下所示。这是从我的台式电脑渲染的。
但是当我将项目复制到我的笔记本电脑上时,应用程序不会渲染地形,而是留下了空白屏幕
我已尝试将驱动程序类型换成笔记本电脑的参考但它仍然无法渲染。有时应用程序将运行(但不会渲染)而不会在笔记本电脑上崩溃,但有时它会在启动后或窗口关闭时崩溃(窗口关闭时占多数)。
错误是:pEngine.exe中0x770A5C0C(ntdll.dll)的未处理异常:0xC0000374:堆已损坏(参数0x770D6478)
后跟:wntdll.pdb未加载。
然后没有进一步的信息。我曾尝试重新安装VS,但这并没有改变任何东西。我尝试在笔记本电脑上创建一个新项目并导入代码,但这也没有改变任何东西(建议不是代码问题?)。我还把这个项目交给了一个朋友,他在桌面上测试了它(它工作和渲染),然后他们在笔记本电脑上测试了它并且它没有使用同样的错误。
我尝试过运行 terrain 教程示例,但它们也没有在笔记本电脑上运行,这表明代码没有任何问题。我还测试了所有其他教程(非地形教程),它们在笔记本电脑上运行良好。
所以我想知道这是否是由于笔记本电脑造成的硬件问题?
在开始场景调用后的渲染循环中,我渲染地形并应用colorshader来显示网格效果
D3D.BeginScene( 0.0f, 0.0f, 0.0f, 1.0f );
......
terrain.Render( D3D.deviceContext );
if( !colorShader.Render( D3D.deviceContext, terrain.indexCount, worldMatrix, viewMatrix, projectionMatrix ) )
{
return false;
}
如果我注释掉colorshader.render调用,应用程序将停止在笔记本电脑上崩溃。从那里,它似乎是ColorShader.cs类的一个问题,可以从rastertek codeplex链接查看。 (我现在不想再这样做了,但如果要求,我会很乐意发布我的代码)
我认为这是一个硬件/笔记本电脑问题,或者我可能没有解决的可能的着色器问题,但我是新手,所以我不太确定。 (调试帮助也没有告诉我任何事情。)