En esta página

QOpenGLVersionFunctionsFactory Class

Proporciona acceso a las funciones OpenGL para una versión y un perfil especificados. Más...

Cabecera: #include <QOpenGLVersionFunctionsFactory>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake: QT += opengl
Desde: Qt 6.0

Miembros públicos estáticos

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

Descripción detallada

Documentación de las funciones de los miembros

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

Devuelve un puntero a un objeto que proporciona acceso a todas las funciones para el versionProfile del context. No es necesario llamar a QAbstractOpenGLFunctions::initializeOpenGLFunctions() mientras el context sea actual. También es posible llamar a esta función cuando context no es actual, pero en ese caso es responsabilidad de quien llama asegurar una correcta inicialización llamando después a QAbstractOpenGLFunctions::initializeOpenGLFunctions().

Normalmente se usaría la versión de plantilla de esta función para que el resultado sea automáticamente del tipo correcto.

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

Devuelve un puntero a un objeto que proporciona acceso a todas las funciones para la versión y perfil de este contexto. No es necesario llamar a QAbstractOpenGLFunctions::initializeOpenGLFunctions() mientras context sea actual. También es posible llamar a esta función cuando context no es actual, pero en ese caso es responsabilidad de quien llama asegurar una correcta inicialización llamando después a QAbstractOpenGLFunctions::initializeOpenGLFunctions().

Normalmente se usaría la versión de plantilla de esta función para que el resultado sea automáticamente del tipo correcto.

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

Es posible solicitar un objeto de funciones para una versión y un perfil diferentes de aquellos para los que se creó el contexto. Para ello, utilice la versión de plantilla de esta función especificando el tipo de objeto de funciones deseado como parámetro de plantilla o pasando un objeto QOpenGLVersionProfile como argumento a la función sin plantilla.

Tenga en cuenta que las solicitudes de objetos de funciones de otras versiones o perfiles pueden fallar y al hacerlo devolverán nullptr. Las situaciones en las que la creación del objeto de funciones puede fallar son si la petición no puede satisfacerse debido a que se solicitan funciones que no están en la versión o perfil de este contexto. Por ejemplo:

  • La solicitud de un objeto de funciones de perfil básico 3.3 tendría éxito.
  • La solicitud de un objeto de funciones de perfil de compatibilidad 3.3 fallaría. No se resolverían las funciones obsoletas.
  • La solicitud de un objeto de funciones del perfil principal 4.3 fallaría. No se resolverían las nuevas funciones del núcleo introducidas en las versiones 4.0-4.3.
  • La solicitud de un objeto de funciones 3.1 tendría éxito. No hay nada en la 3.1 que no esté también en el núcleo de la 3.3.

Tenga en cuenta que si crea un objeto de funciones mediante este método, QOpenGLContext conservará la propiedad del objeto. Esto es para permitir que el objeto sea almacenado en caché y compartido.

Esta función sobrecarga QOpenGLVersionFunctionsFactory::get().

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.