gpt4 book ai didi

c++ - 为什么 OpenGL 版本是 0.0?

转载 作者:行者123 更新时间:2023-11-27 22:49:08 26 4
gpt4 key购买 nike

当我发现 GLFW 无法使用指定版本的 OpenGL 创建窗口时,我正在对一台新计算机上的 OpenGL 应用程序进行故障排除。我创建了一个最小版本的应用程序来测试创建的 OpenGL 版本,无论我提示什么版本,我得到的版本都是 0.0.0.0。我只是没有 OpenGL 吗?这似乎是不可能的,因为 glxgears 运行并且 glxinfo 提示我有 2.1 版。

#include <iostream>
#include <GLFW/glfw3.h>

int main(int argc, const char *argv[]) {
if(!glfwInit()) {
return 1;
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
auto win = glfwCreateWindow(640, 480, "", NULL, NULL);
if(!win) {
return 1;
}
int major = 0, minor = 0;
glfwMakeContextCurrent(win);
glGetIntegerv(GL_MAJOR_VERSION, &major);
glGetIntegerv(GL_MINOR_VERSION, &minor);
std::cout << "Initialized with OpenGL "
<< major << "." << minor << std::endl;
glfwDestroyWindow(win);
glfwTerminate();
}

应用程序的输出是“Initialized with OpenGL 0.0”。一个窗口短暂地打开和关闭,应用程序终止而没有错误。

最佳答案

GL_MAJOR_VERSIONGL_MINOR_VERSION 查询是在 GL 3.0 中引入的。在此之前,这只会在 glGetIntegerv 调用期间生成一个 GL_INVALID_ENUM 错误,并保持您的变量不变。

如果您不能确保您处于 >= 3.0 上下文中,则必须使用 glGetString(GL_VERSION) 可靠地获取版本号。如果您需要这些作为数字,则必须手动解析字符串。

关于c++ - 为什么 OpenGL 版本是 0.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39500664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com