-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