所以这个是一个doozie;
我有一个相当大的 OpenGL 解决方案,在 Windows 7 中使用 GLSL 1.5 的 3.2 版核心编写。我使用 GLEW 和 GLM 作为辅助库。当我创建一个窗口时,我使用以下几行:
// Initialize main window
glewExperimental = GL_TRUE;
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); // Use OpenGL Core v3.2
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
if(!glfwOpenWindow(Game::WINDOW_X, Game::WINDOW_Y, 0, 0, 0, 0, 32, 0, GLFW_WINDOW))
{ ...
如果我省略了三个 glfwOpenWindowHint 函数,应用程序会在调用 glDrawArrays(GL_TRIANGLES, 0, m_numIndices); 时使我的视频驱动程序崩溃。
但这是踢球者。当我小组中的其他人尝试更新和运行解决方案时,他们会得到一个没有几何图形的空白窗口。注释掉这三行会使程序对它们运行良好。在使用 3.2core 提示和不使用 3.2core 提示之间存在相当大的差异。我无法确定 nVidia、AMD、台式机或笔记本电脑之间的任何区别。
我能找到的最好的建议是添加 glewExperimental = GL_TRUE; 因为据说 Glew 的核心有问题。它没有任何区别。该解决方案太大而无法发布代码,但我可以根据需要放置着色器、渲染代码等。
非常感谢!这已经杀死了我们好几天了。