Ich erstelle ein Raster in opengl, sehr einfach, aber bekomme einen Fehler, wenn ich gl :: GenVertexArrays aufrufen. Unten ist der Code. Ich benutze glfw3.OpenGL Ungültige Operation mit GenVertexArrays
GLuint vao = 0;
check_gl_error();
gl::GenVertexArrays(1, &vao);
check_gl_error(); //the error is caught here and its a INVALID_OPERATION
gl::BindVertexArray(vao);
check_gl_error();
Ich habe nicht viel Erfahrung mit OpenGL, aber ich opengl auf demselben Computer verwendet haben, mit GLFW und haben Projekte mit GenVertexArrays arbeiten hatte.
EDIT:
Mein Programm ist Setup mit
if (!glfwInit()) {
std::cout << "Init GLFW failed" << std::endl;
exit(EXIT_FAILURE);
}
GLFWwindow* window = glfwCreateWindow(800, 800, "My Title", NULL, NULL); //glfwGetPrimaryMonitor() full screen
if (!window) {
std::cout << "Init window failed" << std::endl;
glfwTerminate();
exit(EXIT_FAILURE);
}
gl::sys::LoadFunctions();
//check_gl_error();
glfwMakeContextCurrent(window);
check_gl_error();
glfwSwapInterval(1);
check_gl_error();
GLuint programID = gl::CreateProgram();
Spamme 'check_gl_error' nicht überall, du solltest einen Debugkontext mit glfw-Hints einrichten. Sie müssen die Fehlerrückrufe einrichten, die Fehler rufen automatisch den Fehlerrückruf auf. Hast du den Kontext aktuell gemacht? – doug65536
[Es wurde Teil von Kern in OpenGL 1.1] (https://www.opengl.org/registry/specs/ARB/debug_output.txt) gemacht. Es wird mit ziemlicher Sicherheit verfügbar sein, und es ist unglaublich hilfreich, wenn der Fahrer Dinge überprüft und Fehler schnell und genau findet. – doug65536
@ doug65536 Ich habe den Kontext mit glfwMakeContextCurrent (window) ;. Es ist wie die zehnte Codezeile in meinem Programm und tritt vor dem oben angegebenen Code auf. – dan