По какой-то причине, когда я вызываю glfwWindowHint():
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
а затем сделать вызов:
glewInit()
В итоге я получаю glError: GL_INVALID_ENUM. Когда я пропускаю все вызовы glfwWindowHint(), все работает нормально, и glError не устанавливается. Я неправильно использую эти библиотеки, или это ошибка в glfw или glew?
Обратите внимание, что я использую glew-1.10.0 и glfw-3.0.3.
Вот простая программа, иллюстрирующая проблему, которую я вижу:
#include <iostream>
#include "GL/glew.h"
#include "GLFW/glfw3.h"
int main(char* argc, char* argv[])
{
GLFWwindow* window;
if (!glfwInit())
{
return -1;
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
window = glfwCreateWindow(800, 600, "Hello World", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
//glewExperimental = GL_TRUE; tried commenting this out but I still get the error
if(glewInit() != GLEW_OK)
{
return -1;
}
switch(glGetError())
{
case GL_INVALID_ENUM:
std::cout << "why is this happening?";
}
}