每當我嘗試在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調用沒有列出的內容顯示爲一個調用模塊。