下面是我目前正在编写的代码:
int main() {
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
GLFWwindow *window = glfwCreateWindow(WIDTH, HEIGHT, "OpenGL", NULL, NULL);
if (nullptr == window) {
std::cout << "Failed to create GLFW Window" << std::endl;
glfwTerminate();
return EXIT_FAILURE;
}
在运行时,窗口没有被创建,并且我得到了失败消息。我不明白为什么当我定义它的时候,窗口是一个nullptr。我遗漏了什么吗?
1条答案
按热度按时间zfciruhq1#
根据GLFW文档,如果请求的OpenGL上下文版本低于3.2,则
GLFW_OPENGL_PROFILE
窗口提示的值 * 必须 * 为GLFW_OPENGL_ANY_PROFILE
(并且每当调用glfwCreateWindow
时,GLFW都内置了与平台无关的检查)。请访问:https://www.glfw.org/docs/3.3/window_guide.html#GLFW_OPENGL_PROFILE_hint
GLFW_OPENGL_PROFILE指定要为其创建上下文的OpenGL配置文件。可能的值为GLFW_OPENGL_CORE_PROFILE或GLFW_OPENGL_COMPAT_PROFILE之一,或GLFW_OPENGL_ANY_PROFILE(不请求特定配置文件)。如果请求低于3.2的OpenGL版本,则必须使用GLFW_OPENGL_ANY_PROFILE。如果请求OpenGL ES,则忽略此提示。
特别是以下部分:如果请求低于3.2的OpenGL版本,则必须使用GLFW_OPENGL_ANY_PROFILE。
在你的例子中,你会得到一个GLFW错误。特别是这个错误--不管是什么平台/操作系统,如果你通过glfwSetErrorCallback()设置了一个GLFW错误处理函数,你会看到这个错误。