Ich lese gerade die OpenGL Super Bible 7. Ausgabe. Auf dieser Grundlage habe ich einige einfache Code wie folgt:Segfault on glNamedBufferStorage
void startup() {
static const float data[] = {
0.25f, -0.25f, 0.5f, 1.0f,
-0.25f, -0.25f, 0.5f, 1.0f,
0.25f, 0.25f, 0.5f, 1.0f,
};
glGenVertexArrays(1, &m_VAO);
glBindVertexArray(m_VAO);
glGenBuffers(1, &m_VBO);
glBindBuffer(GL_ARRAY_BUFFER, m_VBO);
printf("Size of data[]: %lu bytes\n", sizeof(data));
glNamedBufferStorage(m_VBO, sizeof(data), data, GL_DYNAMIC_STORAGE_BIT);
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(GLfloat), NULL);
glEnableVertexAttribArray(0);
}
Dies ist eine Methode einer Klasse, die vor dem Haupt Rendering-Schleife ausgeführt wird.
Das Problem ist, dass dieser Code einen segfault bei glNamedBufferStorage
generiert.
Ich habe versucht, es mit gdb zu debuggen - und lernte nur, wo der segfault auftritt, nicht warum. Ich habe versucht zu verstehen, ob es ein Problem mit der Größe data
(daher die printf sizeof
) gibt. Aber es scheint in Ordnung zu sein. Ich habe auch versucht, verschiedene Flaggen zu benutzen - auch ohne Erfolg.
Ich habe auch eine grep -R
über den zugehörigen Quellcode, aber keine Anwendungsbeispiele gefunden.
System: Ubuntu, Klirren ++
Was [OpenGL Laden Bibliothek] (https: //www.opengl .org/wiki/OpenGL_Loading_Library) benutzen Sie? Unterstützt Ihre Implementierung OpenGL 4.5? –
@NicolBolas Ich benutze das Beispielframework aus dem Buch, das wiederum gl3w + glfw verwendet - und es scheint zu funktionieren - die Beispiele kompilieren und laufen korrekt und einige meiner früheren Beispiele (ohne zu versuchen, eine VBO zu erstellen) auch hat gut funktioniert. – poetryofruins