After switching from SFML to GLFW for window management, trying to bind my vbo leads to OpenGL error GL_INVALID_OPERATION (1282) with detail "Buffer name does not refer to an buffer object generated by OpenGL".
I manually checked my vbo and it seems to be assign a correct value.
Here is the working example I can produce, using glew-2.1.0 and glfw-3.3.0.
if (!glfwInit())
{
return EXIT_FAILURE;
}
std::cout << glfwGetVersionString() << std::endl;
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 6);
glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE);
auto window = glfwCreateWindow(g_width, g_height, "An Other Engine", nullptr, nullptr);
if (window == nullptr)
{
return EXIT_FAILURE;
}
glfwMakeContextCurrent(window);
if (glewInit() != GLEW_OK)
{
return EXIT_FAILURE;
}
GLint flags;
glGetIntegerv(GL_CONTEXT_FLAGS, &flags);
if (flags & GL_CONTEXT_FLAG_DEBUG_BIT)
{
glEnable(GL_DEBUG_OUTPUT);
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
glDebugMessageCallback(glDebugOutput, nullptr);
glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, nullptr, GL_TRUE);
}
GLuint vao;
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
GLuint vbo;
glGenVertexArrays(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glGenBuffers(1, &vbo)rather thanglGenVertexArrays(1, &vbo)- Rabbid76glGenVertexArrayswhere you meant to sayglGenBuffers. - Nicol Bolas