-1
我在opengl中创建了一个网格,非常简单,但当我调用gl :: GenVertexArrays时出现错误。以下是代码。我正在使用glfw3。OpenGL与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();
我没有太多的经验与OpenGL的,但是我已经使用OpenGL的使用GLFW在同一台计算机上,并曾与GenVertexArrays合作项目。
编辑:
我的计划是建立与
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();
不要在任何地方向'check_gl_error'发送垃圾邮件,您应该使用glfw提示设置一个调试上下文。您需要设置错误回调,错误会自动调用错误回调。你是否使上下文最新? – doug65536
[这是OpenGL 1.1的核心部分](https://www.opengl.org/registry/specs/ARB/debug_output.txt)。它几乎可以肯定是可用的,并且让驾驶员快速准确地验证事情并发现错误是非常有用的。 – doug65536
@ doug65536我确实使上下文与glfwMakeContextCurrent(window);.它就像我程序中的第十行代码,发生在我上面发布的代码之前。 – dan