当将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。