【发布时间】:2014-12-19 01:05:04
【问题描述】:
每当我尝试在 nvidia nsight 中调试着色器时,我的nvcompatlog 中都会出现以下不兼容问题。
glDisable (cap = 0x00008620)
glMatrixMode
glPushMatrix
glLoadIdentity
glOrtho
glBegin
glColor4f
glVertex2f
glEnd
glPopMatrix
这很令人困惑,因为我使用的是 4.2 核心配置文件,而没有使用任何已弃用或固定的函数调用。在这个阶段,我只是在屏幕上绘制一个简单的 2D 正方形,并且可以确保上面列出的功能都没有被使用。
我真正担心的是刚接触 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返回true.
知道如何使用 SDL 和 GLEW 并且不让这些框架调用已弃用的函数吗?
** 编辑 ** 我一直在体验 Dependency Walker here。查看通过 Opengl32.dll 的调用,列出的所有内容均未显示为被调用模块。
【问题讨论】: