OpenGL在使用GLEW时崩溃
opengl crashing when use glew
当我在无符号 int 缓冲区下使用这 3 行时,使用 glew 时 opengl 崩溃
if (glfwInit() != GLEW_OK) {
std::cout << "Error" << std::endl;
}
float positions[6] = {
-0.5, -0.5,
0, 0.5,
0.5, -0.5
};
unsigned int buffer;
//glGenBuffers(1, &buffer);
//glBindBuffer(GL_ARRAY_BUFFER, buffer);
//glBufferData(GL_ARRAY_BUFFER, 6* sizeof(float), positions, GL_STATIC_DRAW);
它在控制台中向我显示错误,但当我使用三个代码时不要崩溃 在未签名的int缓冲区下,我观看了Cherno项目并尝试了他的代码,但我认为这是相同的错误,因为我的GPU很旧
补充 Ripi2 的答案:
这是针对glfw(窗口gui(而不是glew(指向OGL API的函数指针(
这意味着:
GLFW用于创建OpenGL上下文,即创建窗口。它具有用于在各种平台上创建窗口的代码,因此您不必自己编写代码。
GLEW只是通过函数指针获取您的OpenGL实现供您使用。
因此,您应该始终在#include <GLFW/glfw3.h
之前#include <GL/glew.h>
。
您可以通过以下方式检查 GLFW 初始化:
if (!glfwInit()) {
...
}
您可以通过以下方式检查 GLEW 初始化:
if (glewInit() != GLEW_OK) {
...
}
你必须初始化GLEW。在创建 OpenGL 上下文后立即调用glewInit
:
if ( glfwInit() != GLFW_TRUE ) {
// error handling
// ...
}
GLFWwindow *wnd = glfwCreateWindow( ... );
if ( wnd == nullptr ) {
// error handling
// ...
}
glfwMakeContextCurrent(wnd);
glewExperimental = GL_TRUE;
if ( glewInit() != GLEW_OK ) {
// error handling
// ...
}
请注意,如果成功,glewInit
将返回GLEW_OK
。glewInit
初始化 OpenGL 函数的函数指针。 如果尝试通过未初始化的函数指针调用函数,则会发生分段错误。
Glew 可以通过glewExperimental = GL_TRUE;
启用其他扩展。请参阅GLEW文档,其中说:
GLEW 从图形驱动程序获取有关支持的扩展的信息。但是,实验性或预发布驱动程序可能不会通过标准机制报告每个可用的扩展,在这种情况下,GLEW 将报告它不受支持。为了规避这种情况,可以通过在调用
glewInit()
之前将其设置为GL_TRUE
来打开glewExperimental
全局开关,从而确保所有具有有效入口点的分机都将公开。
glfwInit()
?不。这是针对glfw
(窗口 GUI(而不是glew
(指向 OGL API 的函数指针(。使用glewInit()
- 当回溯以零开始时,如何调试崩溃
- 内联映射初始化的动态atexit析构函数崩溃
- 执行函数时导致崩溃的变量
- 程序崩溃并显示"std::out_of_range"错误
- CoInitialize()在单独的线程上崩溃而不返回
- 使用调试/崩溃报告将应用程序部署到客户端
- 为什么所有C++编译器都会崩溃或挂起此代码
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 为什么我的多线程作业队列崩溃
- ExtractIconEx:可以工作,但偶尔会崩溃
- 为什么引用传递会导致此崩溃(C++)
- 试图创建流或fopen时程序崩溃
- 类对象数组的问题会导致崩溃
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 为什么要增加导致崩溃的指针
- 在虚幻引擎中删除NXOpen对象时崩溃
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- OpenGL在使用GLEW时崩溃
- GLEW编译,但在运行时崩溃