QOpenGLVersionFunctionsFactory 类

提供访问指定版本和配置文件的 OpenGL 函数。 更多...

头文件 #include <QOpenGLVersionFunctionsFactory>
CMakefind_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmakeQT += opengl
Qt 6.0

静态公有成员

QAbstractOpenGLFunctions *get(const QOpenGLVersionProfile &versionProfile = QOpenGLVersionProfile(), QOpenGLContext *context = nullptr)
类型 *get(QOpenGLContext *context = nullptr)

详细描述

成员函数文档

[static] QAbstractOpenGLFunctions *QOpenGLVersionFunctionsFactory::get(const QOpenGLVersionProfile &versionProfile = QOpenGLVersionProfile(), QOpenGLContext *context = nullptr)

返回一个指向对象的指针,该对象提供访问 版本配置文件 的所有 上下文 函数。只要 上下文 是当前的,就没有必要调用 QAbstractOpenGLFunctions::initializeOpenGLFunctions()。当 上下文 不是当前时,也可以调用此函数,但在此情况下,调用者的责任是在之后调用 QAbstractOpenGLFunctions::initializeOpenGLFunctions() 确保适当的初始化。

通常,人们会使用此函数的模板版本,以便自动将结果转换为正确的类型。

[static] template <typename TYPE> TYPE *QOpenGLVersionFunctionsFactory::get(QOpenGLContext *context = nullptr)

此函数重载 get()。

返回一个指向对象的指针,该对象提供访问本 上下文 版本和配置文件的所有函数。只要 上下文 是当前的,就没有必要调用 QAbstractOpenGLFunctions::initializeOpenGLFunctions()。当 上下文 不是当前时,也可以调用此函数,但在此情况下,调用者的责任是在之后调用 QAbstractOpenGLFunctions::initializeOpenGLFunctions() 确保适当的初始化。

通常,人们会使用此函数的模板版本,以便自动将结果转换为正确的类型。

auto funcs = QOpenGLVersionFunctionsFactory::get<QOpenGLFunctions_3_3_Core>(context);
if (!funcs) {
    qFatal("Could not obtain required OpenGL context version");
}

可以请求一个与上下文创建的版本和配置文件不同的函数对象。为此,可以使用指定模板参数为所需函数对象类型的函数模板版本,或者通过将 QOpenGLVersionProfile 对象作为参数传递给非模板函数来实现。

请注意,对其他版本或配置文件功能的对象请求可能会失败,并且在这种情况下将返回 nullptr。当请求的功能不在此上下文的版本或配置文件中时,创建功能对象的请求可能会失败。例如:

  • 请求3.3核心配置文件功能对象将会成功。
  • 请求3.3兼容性配置文件功能对象将会失败。我们将无法解析弃用功能。
  • 请求4.3核心配置文件功能对象将会失败。我们将无法解析4.0-4.3版本中引入的新核心功能。
  • 请求3.1功能对象将会成功。3.1中没有3.3核心中没有的功能。

请注意,如果通过此方法创建功能对象,则 QOpenGLContext 保留了对象的所有权。这是为了允许对象被缓存和共享。

© 2024 Qt公司。本指南中的文献贡献权归各自所有者所有。本指南提供的文献受 GNU自由文献许可1.3版本 的条款约束,由自由软件基金会发布。Qt及其相关标志是芬兰和/或全世界 Qt公司的商标。所有其他商标均为各自所有者的财产。