2015-10-13 128 views
0

更新1: 我已經嘗試了相同教程的C++源代碼,並且在筆記本電腦上運行良好。DirectX應用程序不在筆記本電腦上渲染

更新2: 我咬緊牙關,決定改用C++來處理項目。到目前爲止,C#版本中的所有內容都能在C++版本中正常工作。我無法解決或解決我的問題。

我正在開發一個使用SharpDX包裝器的小型DirectX項目。我使用的是VS2015社區版,我也在運行Windows 10.我一直在關注這些教程(請參閱回覆評論#1),尤其是在這裏找到的教程的C#轉換(請參閱回覆評論#2)。我沒有10代表,所以我只能發佈2個鏈接....

我已經按照教程生成如下所示的地形。這是從我的臺式電腦渲染的。

enter image description here

但是,當我在複製該項目,以我的筆記本電腦,應用程序不會呈現地形,我留下了一個空白屏幕

enter image description here

我曾嘗試調換驅動器輸入到筆記本電腦的引用,但它仍然不會呈現。在某些情況下,應用程序將在筆記本電腦上運行(但不是渲染)而不會崩潰,但有時它會在開始或關閉窗口(窗口關閉時的大部分)後崩潰。

的錯誤是:0xC0000374:在0x770A5C0C(NTDLL.DLL)在pEngine.exe未處理的異常堆已被損壞(參數0x770D6478)

跟:wntdll.pdb未加載。

然後沒有進一步的信息。我曾嘗試重新安裝VS,但沒有改變任何東西。我曾嘗試在筆記本電腦上創建一個新項目並導入代碼,但這也沒有改變任何東西(暗示不是代碼問題?)。我還將這個項目交給了一位在桌面上測試過的朋友(它的工作和渲染),然後他們在筆記本電腦上測試了它,並且沒有發生同樣的錯誤。

我已經嘗試運行地形教程示例,他們也不會在筆記本電腦上運行,表明代碼沒有任何問題。我還測試了所有其他教程(非地形教程),並且它們在筆記本電腦上工作良好。

所以我想知道這是否是由於筆記本電腦的硬件問題?

在現場開始通話後我的渲染循環,我渲染地形和應用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鏈接中查看。 (我現在不想再做這個了,但我會很高興地發佈我的代碼,如果需要的話)

我在想這是一個硬件/筆記本電腦問題或可能的着色器問題,我沒有尋址但我是新手,所以我不太確定。(調試幫助也沒有告訴我任何事情)。

+0

http://www.rastertek.com/ https://rastertekdx.codeplex.com/ –

+0

你的程序崩潰,所以它是最有可能你是餵養SharpDX的本地的DirectX實現的東西是錯誤的。也許它只是一個損壞的數組,或者你傳遞的大小比預期的大(比如頂點或索引的數量)。有很多事情可能會出現DirectX程序錯誤。當未定義的行爲被堆損壞觸發時,不同的驅動程序和硬件平臺的行爲會有所不同。在臺式機上,您最有可能使用Nvidia或AMD專用GPU,在筆記本電腦上,它可能是英特爾集成顯卡。這就是爲什麼你的結果在平臺之間不一致。 – Drop

+0

那麼你是說可能存在代碼問題,但桌面驅動程序/硬件不關心它,並且無論如何運行?我認爲它可以在任何Windows設備上運行,但我真的應該考慮不同的硬件/驅動程序? –

回答

0

您針對的是Directx11嗎?確保你的筆記本電腦通過運行dxdiag來支持它。在內核 enter image description here

+0

dxdiag在功能級別下顯示11.0。它還表示沒有發現問題。 –

相關問題