我设置了一个最小的应用程序,使用GLFW3打开一个空白窗口:
#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
void glfwErrorCallback(int error, const char *description)
{
std::cerr << "GLFW error " << error << ": " << description << std::endl;
}
int main(int argc, char **argv)
{
GLFWwindow* window;
glfwSetErrorCallback(glfwErrorCallback);
if(!glfwInit())
{
std::cerr << "Failed to initialize GLFW...\n";
return -1;
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
window = glfwCreateWindow(1024, 768, "GLFW window", NULL, NULL);
if(!window)
{
std::cerr << "Failed to open GLFW window...\n";
glfwTerminate();
return -1;
}
glewExperimental = GL_TRUE;
if (glewInit())
{
std::cerr << "Failed to initialize GLEW...\n";
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
while (glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS && !glfwWindowShouldClose(window))
{
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
出现以下错误:
GLFW错误65540:上下文配置文件仅存在于OpenGL版本3.2及以上
无法打开GLFW窗口...
应用程序在Linux上运行,使用Bumblebee的optirun
。当使用freeglut而不是GLFW时,代码可以正常工作。导致错误的代码有什么问题?
glewInit(...)
之前设置glewExperimental = GL_TRUE
。这可能与此有关... - Andon M. Colemanif(!window)
后面的;
(请检查编辑日志)。 我真的应该去睡觉了。 - slashsb6.h
文件中更改。 - Mohammad Banisaeid