glGenVertexArrays调用上的程序崩溃
Program Crash on glGenVertexArrays call
我正在尝试学习如何在opengl中编程,并使用本教程。教程1运行良好,教程2因返回1而崩溃。
它在以下方面失败:
GLuint VertexArrayID;
glGenVertexArrays(1, &VertexArrayID);
glBindVertexArray(VertexArrayID);
具体而言:
glGenVertexArrays(1, &VertexArrayID);
有什么建议吗?与glGenVertexArrays调用相关但从未解决OpenGL、FreeGlut和Glew崩溃
读取此线程后,调用
glewExperimental = GL_TRUE;
glewInit();
会解决问题。在这里阅读glewExperimental,它说
GLEW从图形中获取有关支持的扩展的信息驾驶员然而,实验或预发布驱动程序可能不会报告通过标准机制的每个可用扩展,其中案例GLEW将报告它不受支持。为了避免这种情况,glewExperimental全局开关可以通过将其设置为GL_TRUE,然后调用glewInit(),这样可以确保所有扩展具有有效入口点的将被暴露。
我不太确定这对glGenVertexArrays有什么帮助,但值得尝试
将您的glew更新到2.0.0版本。这是由这个错误引起的。
在nvidia GPU和GLEW上使用OpenGL 4.3,这个技巧仍然有效。
我能够使用这个修复程序来运行第8版4.3第1章中的"我们的第一个程序:详细讨论"。
注释
glewExperimental = GL_TRUE;
导致一个未处理的异常,所以我很确定这就是问题所在。将它重新添加到代码中,程序就会按预期运行。
更新答案以澄清原始答案的新内容:
[1] 请注意,最初答案上的日期已经超过两年了,所以我验证了在OpenGL的新版本中这一点仍然正确。网络上OpenGL示例代码的一个主要问题是教程内容的老化,这些内容可能仍然有效,但不被认为是最佳实践或最具性能的路径。当我读到最初的答案时,我的想法是:
"好吧,但这已经两年了。。。GLEW仍然没有更新,并且这个答案已经过时了吗?',所以现在读者会知道,截至2014年9月13日,这是事实。
[2] 我希望许多读者尝试在OpenGL程序员指南中运行非常简单的第一个示例,如果没有这个修复程序,它将不会运行。通过包括书名,我希望他们能在网络搜索中找到这个答案。
[3] 我指定了平台,我确信这是有效的,以澄清我没有在所有平台上测试它。
- 程序崩溃并显示"std::out_of_range"错误
- 试图创建流或fopen时程序崩溃
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 如何找出应用程序崩溃的原因 - Win 10 LTSB
- 操纵安卓相机的深度图导致应用程序崩溃
- 为什么当我尝试搜索双链表中第一个数据条目之外的数据时,程序崩溃了?
- DLL Made with CMake 使程序崩溃
- 程序崩溃使用boost::asio
- 调用 free() 有时会导致程序崩溃
- 邮件加密程序崩溃
- 调用 java 的回调() 时应用程序崩溃.由于 detatchThread 而获得运行时错误
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- For 循环在尝试读取数组 c++ 时程序崩溃
- 即使有 0 个错误,Getter 似乎也会使程序崩溃
- Windows桌面程序保存您的计算机会话 - 基于程序崩溃时的恢复会话
- 无法访问的代码如何导致我的程序崩溃?
- 矢量迭代器在尝试调用函数时使我的程序崩溃
- QCompleter set模型使应用程序崩溃
- 使用唯一指针调用函数会使我的程序崩溃
- 删除SDL_PollEvent时程序崩溃