2015-05-06 58 views
0

我編寫了一個使用了2個着色器程序的OpenGL應用程序,它們都配備了頂點着色器和片段着色器 着色器程序看起來很好 但是當我試圖用Nsight調試這些着色器程序時4.6我發現我無法在「着色器列表」窗口中找到任何着色器。 順便說一句,我使用的GPU筆記本電腦(NVIDIA GeForce GTX760M)無法使用Nsight調試着色器

回答

0

我猜你的OGL示例可能仍然運行在您的筆記本電腦的iGPU,但不是NV的dGPU。請嘗試添加一些代碼來識別您的渲染器:

const GLubyte* glvendro = glGetString(GL_VENDOR); 
const GLubyte* glrenderer = glGetString(GL_RENDERER); 

確保它是NV的GPU。

如果顯示非NV的GPU,則表示驅動程序會選擇其他GPU,請嘗試強制禁用該GPU並確保驅動程序僅查找NV的GPU。

我知道您關於'將電源管理狀態切換到最大功率,GTX760M GPU強制開啓'的含義,但這可能無效,您必須以硬件方式禁用非NV GPU,進入BIOS並進入禁用iGPU。

如果在BIOS中找不到該選項,只需找到另一臺顯示器,將其連接到NV的dGPU輸出[HDMI或DP],強制您的樣品在該顯示器上運行將使其使用dGPU。

感謝 的

似乎它的線程在Nvidia的發展論壇https://devtalk.nvidia.com/default/topic/830717/nsight-visual-studio-edition/nsight-shader-list-is-empty/

+0

感謝您的解決方案 我試着閱讀GL_VERSION,GL_VENDOR和GL_RENDERER的輸出,這裏是輸出字符串: 的OpenGL版本:4.3.0 NVIDIA 349.90 當前GPU供應商:NVIDIA公司 當前渲染器:GeForce GTX 760M/PCIe/SSE2 所以我100%確定我的應用程序是由dGPU運行的 – Grillnov

+0

目前我能夠使用Nsight查看OpenGL API調用,但我仍然無法調試着色器因爲它是空的 此外,我仍然無法使用Nsight檢查緩衝區存儲,顯示所有緩衝區sh他們的內存位置是0x0000000000,這是沒有意義的。 至於禁用使用BIOS的非NV GPU,不幸的是我的筆記本電腦不支持這個功能來一勞永逸地禁用Optimus。不過,我確實有一個HDMI輸出端口,所以無論如何,你確定連接另一臺顯示器真的有效嗎? 無論如何。 – Grillnov