glGenBuffer导致分段错误



当将glGenBuffers与几乎任何其他gl函数一起使用时,程序在启动时崩溃

#define GL_GLEXT_PROTOTYPES
#include </usr/include/GLFW/glfw3.h>
#include <iostream>
int main()
{
glfwInit();
GLFWwindow *wd = glfwCreateWindow(900, 800, "main window", NULL, NULL);
glfwMakeContextCurrent(wd);
GLuint *buffer;
glGenBuffers(1, buffer);
glBindBuffer(GL_ARRAY_BUFFER, *buffer);
while (!glfwWindowShouldClose(wd))
{
glfwPollEvents();
}
glfwTerminate();
}

更改:

GLuint *buffer;
glGenBuffers(1, buffer);
glBindBuffer(GL_ARRAY_BUFFER, *buffer);

至:

GLuint buffer;
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);

问题是:您给OpenGL的是一个未初始化变量的值,它会将其视为存储缓冲区id的内存位置。相反,您应该声明一个堆栈/局部变量,并使用指向该变量的指针(这是一个有效的地址位置(来提供OpenGL。

相关内容

  • 没有找到相关文章

最新更新