при использовании 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 значение неинициализированной переменной, которую он будет рассматривать как ячейку памяти для хранения идентификатора буфера. Вместо этого вы должны объявить стековую/локальную переменную и использовать указатель на нее (который является действительным адресом), чтобы предоставить OpenGL.