2014-12-19 89 views
0

每當我嘗試在nvidia nsight中調試着色器時,在我的nvcompatlog中遇到以下不兼容問題。nsight - OpenGL 4.2調試不兼容

glDisable (cap = 0x00008620) 
     glMatrixMode 
     glPushMatrix 
     glLoadIdentity 
     glOrtho 
     glBegin 
     glColor4f 
     glVertex2f 
     glEnd 
     glPopMatrix 

這是令人困惑的,因爲我使用4.2核心配置文件,而不使用任何不建議或固定的函數調用。在這個階段,我只是畫一個簡單的二維方塊到屏幕上,並且可以確保沒有使用上面列出的功能。

我真正的擔憂是SDL的新手& GLEW我不確定他們在幕後使用的是什麼功能。我一直在網上搜索,發現其他人正在使用SDL,GLEW,Nvidia nsight。這讓我相信我忽略了一些東西。以下簡要說明我如何初始化SDL & GLW。

SDL_Init(SDL_INIT_EVERYTHING); 
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4); 
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2); 
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); 
SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); 

SDL_Window *_window; 
_window = SDL_CreateWindow("Red Square", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED , 200, 200, SDL_WINDOW_OPENGL); 

SDL_GLContext glContext = SDL_GL_CreateContext(_window); 
glewExperimental = GL_TRUE; 
GLenum status = glewInit(); 
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); 

在實現中,我在每次調用後都會檢查錯誤。我從例子中排除了它,以減少混亂的數量。以上所有都不會產生錯誤並返回有效的對象。

glewGetString(GLEW_VERSION)返回4.2.0 NVIDIA 344.75初始化,glewGetString(GLEW_VERSION)回報1.11.0,並GLEW_VERSION_4_2回報真正

關於如何使用SDL & GLEW並且沒有這些框架中的任何一個調用不推薦使用的函數的想法?

**編輯** 我一直在用Dependency Walker here進行實驗。查看通過Opengl32.dll調用沒有列出的內容顯示爲一個調用模塊。

回答

1

對於任何感興趣的人,Nsight都會捕獲發給OpenGL服務器的所有命令。不僅僅是通過你的應用程序發佈的。如果您啓用了任何FPS或錄製軟件,則這些傾向於使用繪製到幀緩衝區的棄用方法。在我的情況下,它是裏瓦調諧器它顯示任何正在運行的遊戲屏幕上的FPS。禁用它解決了我的問題。