AGu*_*ace 6 c++ glew glfw opengl-3
所以这个是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))
{ ...
Run Code Online (Sandbox Code Playgroud)
如果我省略了三个glfwOpenWindowHint函数,应用程序在调用glDrawArrays(GL_TRIANGLES,0,m_numIndices)时会崩溃我的视频驱动程序;
但这是踢球者.当我的组中的其他人尝试更新并运行解决方案时,他们会得到一个没有几何体的空白窗口.注释掉这三行会使程序运行正常.使用3.2核心提示和不使用3.2核心提示之间存在相当分歧.我无法确定nVidia,AMD,台式机或笔记本电脑之间的任何差异.
我能找到的最好的建议是添加glewExperimental = GL_TRUE; 据说Glew有核心问题.它没有任何区别.解决方案太大而无法发布代码,但我可以根据需要设置着色器,渲染代码等.
非常感谢!这已经杀了我们好几天了.
orl*_*rlp 10
尝试要求转发兼容的GLFW窗口:
GLFW_OPENGL_FORWARD_COMPAT - 指定OpenGL上下文是否应该是向前兼容的(即禁止遗留功能).这只应在请求OpenGL 3.0或更高版本时使用.
并尝试不设置配置文件提示,让系统选择:
// Use OpenGL Core v3.2
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
Run Code Online (Sandbox Code Playgroud)
另外,请确保您实际获得所需的版本:
int major, minor, rev;
glfwGetGLVersion(&major, &minor, &rev);
fprintf(stderr, "OpenGL version recieved: %d.%d.%d", major, minor, rev);
Run Code Online (Sandbox Code Playgroud)
不确定你是否也为Mac运行,但无论如何都要阅读:
A.4 Mac OS X上的OpenGL 3.0+
Mac OS X 10.7引入了对OpenGL 3.0及更高版本的支持,甚至支持前向兼容的OpenGL 3.2核心配置文件上下文,也没有请求调试上下文的机制.早期版本的Mac OS X最多支持OpenGL 2.1版.
因此,在Mac OS X 10.7上,如果给定的版本高于3.2,则GLFW_OPENGL_VERSION_MAJOR和GLFW_OPENGL_VERSION_MINOR提示将失败,GLFW_OPENGL_DEBUG_CONTEXT和GLFW_FORWARD_COMPAT提示将被忽略,并且将GLFW_OPENGL_PROFILE提示设置为除零或GLFW_OPENGL_CORE_PROFILE之外的任何内容将导致glfwOpenWindow失败.
此外,在Mac OS X 10.6及更低版本中,如果给定的版本高于2.1,则GLFW_OPENGL_VERSION_MAJOR和GLFW_OPENGL_VERSION_MINOR提示将失败,GLFW_OPENGL_DEBUG_CONTEXT提示将无效,并且将GLFW_OPENGL_PROFILE或GLFW_FORWARD_COMPAT提示设置为非零值将导致glfwOpenWindow失败.
| 归档时间: |
|
| 查看次数: |
5987 次 |
| 最近记录: |