我正在尝试使用以下代码将我的QOpenGLWidget的OpenGL版本设置为3.3。
QSurfaceFormat defaultFormat;
defaultFormat.setProfile(QSurfaceFormat::CoreProfile);
defaultFormat.setVersion(3, 3);
defaultFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer);
QSurfaceFormat::setDefaultFormat(defaultFormat);
QApplication a(argc, argv);
问题是我后来打电话给glGetString(GL_VERSION)
我
4.1 INTEL-10.14.73
作为输出。这应该发生吗?看来我可以使用2.1或4.1,而且Qt不允许我在它们之间使用任何东西。
答案 0 :(得分:3)
是的,这是正常的。完全有效。
除3.2 core profile break外,每个较高的OpenGL版本都向后兼容较低版本。因此,如果你要求3.3,一个实现可以免费给你4.1,因为4.1会做3.3所做的一切。
实际上,如果您要求2.1,则允许实现4.1 兼容性配置文件,因为它向后兼容2.1。现在在MacOSX上,你不会得到它,因为Apple没有公开任何兼容性配置文件。但他们可以拥有。