После переключения с SFML на GLFW для управления окнами попытка привязать мой vbo приводит к ошибке OpenGL GL_INVALID_OPERATION (1282) с подробным описанием «Имя буфера не относится к объекту буфера, сгенерированному OpenGL».
I вручную проверил мой vbo, и, кажется, ему присвоено правильное значение.
Вот рабочий пример, который я могу создать, используя glew-2.1.0 и 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);