QSurfaceFormat Class
La clase QSurfaceFormat representa el formato de un QSurface. Más...
| Cabecera: | #include <QSurfaceFormat> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
Tipos públicos
| enum | FormatOption { StereoBuffers, DebugContext, DeprecatedFunctions, ResetNotification, ProtectedContent } |
| flags | FormatOptions |
| enum | OpenGLContextProfile { NoProfile, CoreProfile, CompatibilityProfile } |
| enum | RenderableType { DefaultRenderableType, OpenGL, OpenGLES, OpenVG } |
| enum | SwapBehavior { DefaultSwapBehavior, SingleBuffer, DoubleBuffer, TripleBuffer } |
Funciones Públicas
| QSurfaceFormat() | |
| QSurfaceFormat(QSurfaceFormat::FormatOptions options) | |
| QSurfaceFormat(const QSurfaceFormat &other) | |
| ~QSurfaceFormat() | |
| int | alphaBufferSize() const |
| int | blueBufferSize() const |
| const QColorSpace & | colorSpace() const |
| int | depthBufferSize() const |
| int | greenBufferSize() const |
| bool | hasAlpha() const |
| int | majorVersion() const |
| int | minorVersion() const |
| QSurfaceFormat::FormatOptions | options() const |
| QSurfaceFormat::OpenGLContextProfile | profile() const |
| int | redBufferSize() const |
| QSurfaceFormat::RenderableType | renderableType() const |
| int | samples() const |
| void | setAlphaBufferSize(int size) |
| void | setBlueBufferSize(int size) |
(since 6.0) void | setColorSpace(const QColorSpace &colorSpace) |
| void | setDepthBufferSize(int size) |
| void | setGreenBufferSize(int size) |
| void | setMajorVersion(int major) |
| void | setMinorVersion(int minor) |
| void | setOption(QSurfaceFormat::FormatOption option, bool on = true) |
| void | setOptions(QSurfaceFormat::FormatOptions options) |
| void | setProfile(QSurfaceFormat::OpenGLContextProfile profile) |
| void | setRedBufferSize(int size) |
| void | setRenderableType(QSurfaceFormat::RenderableType type) |
| void | setSamples(int numSamples) |
| void | setStencilBufferSize(int size) |
| void | setStereo(bool enable) |
| void | setSwapBehavior(QSurfaceFormat::SwapBehavior behavior) |
| void | setSwapInterval(int interval) |
| void | setVersion(int major, int minor) |
| int | stencilBufferSize() const |
| bool | stereo() const |
| QSurfaceFormat::SwapBehavior | swapBehavior() const |
| int | swapInterval() const |
| bool | testOption(QSurfaceFormat::FormatOption option) const |
| std::pair<int, int> | version() const |
| QSurfaceFormat & | operator=(const QSurfaceFormat &other) |
Miembros públicos estáticos
| QSurfaceFormat | defaultFormat() |
| void | setDefaultFormat(const QSurfaceFormat &format) |
No miembros relacionados
| bool | operator!=(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs) |
| bool | operator==(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs) |
Descripción detallada
El formato incluye el tamaño de los buffers de color, rojo, verde y azul; el tamaño del buffer alpha; el tamaño de los buffers de profundidad y stencil; y el número de muestras por pixel para multisampling. Además, el formato contiene parámetros de configuración de la superficie, como el perfil y la versión de OpenGL para el renderizado, la activación o no de las memorias intermedias estereoscópicas y el comportamiento de intercambio.
Nota: Al solucionar problemas de contexto o de formato de ventana, puede ser útil activar la categoría de registro qt.qpa.gl. Dependiendo de la plataforma, esto puede imprimir información de depuración útil cuando se trata de la inicialización de OpenGL y las configuraciones nativas visuales o framebuffer a las que QSurfaceFormat se asigna.
Documentación de tipos de miembros
enum QSurfaceFormat::FormatOption
flags QSurfaceFormat::FormatOptions
Este enum contiene opciones de formato para su uso con QSurfaceFormat.
| Constante | Valor | Descripción |
|---|---|---|
QSurfaceFormat::StereoBuffers | 0x0001 | Utilizado para solicitar buffers estéreo en el formato de superficie. |
QSurfaceFormat::DebugContext | 0x0002 | Se utiliza para solicitar un contexto de depuración con información de depuración adicional. |
QSurfaceFormat::DeprecatedFunctions | 0x0004 | Se utiliza para solicitar que se incluyan funciones obsoletas en el perfil de contexto OpenGL. Si no se especifica, se obtendrá un contexto compatible con el futuro sin funciones de soporte marcadas como obsoletas. Esto requiere OpenGL versión 3.0 o superior. |
QSurfaceFormat::ResetNotification | 0x0008 | Habilita las notificaciones sobre reinicios del contexto OpenGL. El estado se puede consultar a través de la función isValid() del contexto. Tenga en cuenta que no establecer esta bandera no garantiza que nunca se produzca una pérdida de estado del contexto. Además, algunas implementaciones pueden optar por informar de la pérdida de contexto independientemente de este indicador. Las plataformas que soportan habilitar dinámicamente la monitorización de la pérdida de contexto, tales como, Windows con WGL, o Linux/X11 (xcb) con GLX, monitorizarán el estado en cada llamada a makeCurrent(). Ver isValid() para más información al respecto. |
QSurfaceFormat::ProtectedContent | 0x0010 | Habilita el acceso a contenidos protegidos. Esto permite a la GPU operar sobre recursos protegidos (superficies, buffers, texturas), por ejemplo contenido de video protegido por DRM. Actualmente sólo está implementado para EGL. |
El tipo FormatOptions es un typedef para QFlags<FormatOption>. Almacena una combinación OR de valores FormatOption.
enum QSurfaceFormat::OpenGLContextProfile
Este enum se utiliza para especificar el perfil de contexto OpenGL, junto con QSurfaceFormat::setMajorVersion() y QSurfaceFormat::setMinorVersion().
Los perfiles se exponen en OpenGL 3.2 y superiores, y se utilizan para elegir entre un perfil de núcleo restringido y un perfil de compatibilidad que puede contener funcionalidad de soporte obsoleta.
Ten en cuenta que el perfil básico puede contener funciones obsoletas cuya eliminación está prevista para una versión superior. Para acceder a la funcionalidad obsoleta del perfil principal en la versión de OpenGL establecida, puedes utilizar la opción de formato QSurfaceFormat QSurfaceFormat::DeprecatedFunctions .
| Constante | Valor | Descripción |
|---|---|---|
QSurfaceFormat::NoProfile | 0 | La versión de OpenGL es inferior a la 3.2. Para 3.2 y posteriores es igual que CoreProfile. |
QSurfaceFormat::CoreProfile | 1 | La funcionalidad obsoleta en OpenGL versión 3.0 no está disponible. |
QSurfaceFormat::CompatibilityProfile | 2 | La funcionalidad de versiones anteriores de OpenGL está disponible. |
enum QSurfaceFormat::RenderableType
Este enum especifica el backend de renderizado de la superficie.
| Constante | Valor | Descripción |
|---|---|---|
QSurfaceFormat::DefaultRenderableType | 0x0 | El método de renderizado por defecto, no especificado |
QSurfaceFormat::OpenGL | 0x1 | Renderizado OpenGL de escritorio |
QSurfaceFormat::OpenGLES | 0x2 | Renderizado OpenGL ES 2.0 |
QSurfaceFormat::OpenVG | 0x4 | Renderizado Open Vector Graphics |
enum QSurfaceFormat::SwapBehavior
Este enum se utiliza en QSurfaceFormat para especificar el comportamiento de intercambio de una superficie. El comportamiento de intercambio es transparente para la aplicación, pero afecta a factores como la latencia de renderizado y el rendimiento.
| Constante | Valor | Descripción |
|---|---|---|
QSurfaceFormat::DefaultSwapBehavior | 0 | El comportamiento de intercambio predeterminado y no especificado de la plataforma. |
QSurfaceFormat::SingleBuffer | 1 | Se utiliza para solicitar un búfer único, que puede provocar parpadeos cuando el renderizado OpenGL se realiza directamente en pantalla sin un búfer intermedio fuera de pantalla. |
QSurfaceFormat::DoubleBuffer | 2 | Este suele ser el comportamiento de intercambio predeterminado en las plataformas de escritorio, que consiste en un búfer trasero y un búfer delantero. El renderizado se realiza en el búfer trasero y, a continuación, el búfer trasero y el frontal se intercambian, o el contenido del búfer trasero se copia en el frontal, dependiendo de la implementación. |
QSurfaceFormat::TripleBuffer | 3 | Este comportamiento de intercambio se utiliza a veces para reducir el riesgo de saltarse un fotograma cuando la velocidad de renderizado apenas alcanza la velocidad de refresco de la pantalla. Dependiendo de la plataforma, también puede conducir a un uso ligeramente más eficiente de la GPU debido a un mejor comportamiento de pipelining. El triple buffering tiene el coste de un fotograma extra de uso de memoria y latencia, y puede no ser soportado dependiendo de la plataforma subyacente. |
Documentación de las funciones miembro
QSurfaceFormat::QSurfaceFormat()
Construye un QSurfaceFormat inicializado por defecto.
Nota: Por defecto se solicita OpenGL 2.0 ya que proporciona el mayor grado de portabilidad entre plataformas e implementaciones OpenGL.
QSurfaceFormat::QSurfaceFormat(QSurfaceFormat::FormatOptions options)
Construye un QSurfaceFormat con el formato dado options.
QSurfaceFormat::QSurfaceFormat(const QSurfaceFormat &other)
Construye una copia de other.
[noexcept] QSurfaceFormat::~QSurfaceFormat()
Destruye el QSurfaceFormat.
int QSurfaceFormat::alphaBufferSize() const
Obtiene el tamaño en bits del canal alfa del buffer de color.
Véase también setAlphaBufferSize().
int QSurfaceFormat::blueBufferSize() const
Obtiene el tamaño en bits del canal azul del buffer de color.
Véase también setBlueBufferSize().
const QColorSpace &QSurfaceFormat::colorSpace() const
Devuelve el espacio de color.
Véase también setColorSpace().
[static] QSurfaceFormat QSurfaceFormat::defaultFormat()
Devuelve el formato de superficie global por defecto.
Cuando no se llama a setDefaultFormat(), se trata de un QSurfaceFormat construido por defecto.
Véase también setDefaultFormat().
int QSurfaceFormat::depthBufferSize() const
Devuelve el tamaño del búfer de profundidad.
Véase también setDepthBufferSize().
int QSurfaceFormat::greenBufferSize() const
Obtiene el tamaño en bits del canal verde del buffer de color.
Véase también setGreenBufferSize().
bool QSurfaceFormat::hasAlpha() const
Devuelve true si el tamaño del búfer alfa es mayor que cero.
Esto significa que la superficie podría utilizarse con efectos de translucidez por píxel.
int QSurfaceFormat::majorVersion() const
Devuelve la versión principal de OpenGL.
La versión por defecto es 2.0.
Véase también setMajorVersion().
int QSurfaceFormat::minorVersion() const
Devuelve la versión menor de OpenGL.
Véase también setMinorVersion().
QSurfaceFormat::FormatOptions QSurfaceFormat::options() const
Devuelve las opciones de formato configuradas actualmente.
Véase también setOption(), setOptions() y testOption().
QSurfaceFormat::OpenGLContextProfile QSurfaceFormat::profile() const
Obtiene el perfil de contexto OpenGL configurado.
Este parámetro se ignora si la versión de OpenGL solicitada es inferior a 3.2.
Véase también setProfile().
int QSurfaceFormat::redBufferSize() const
Obtiene el tamaño en bits del canal rojo del buffer de color.
Véase también setRedBufferSize().
QSurfaceFormat::RenderableType QSurfaceFormat::renderableType() const
Obtiene el tipo de renderizable.
Elige entre OpenGL de escritorio, OpenGL ES y OpenVG.
Véase también setRenderableType().
int QSurfaceFormat::samples() const
Devuelve el número de muestras por píxel cuando el multimuestreo está activado, o -1 cuando el multimuestreo está desactivado. El valor devuelto por defecto es -1.
Véase también setSamples().
void QSurfaceFormat::setAlphaBufferSize(int size)
Establece el size deseado en bits del canal alfa del buffer de color.
Véase también alphaBufferSize().
void QSurfaceFormat::setBlueBufferSize(int size)
Establece el size deseado en bits del canal azul del buffer de color.
Véase también blueBufferSize().
[since 6.0] void QSurfaceFormat::setColorSpace(const QColorSpace &colorSpace)
Establece la preferencia colorSpace.
Por ejemplo, esto permite solicitar ventanas con framebuffers por defecto que sean compatibles con sRGB en plataformas que lo soporten.
Nota: Cuando el espacio de color solicitado no es compatible con la plataforma, la solicitud se ignora. Consulte QSurfaceFormat tras la creación de la ventana para comprobar si la solicitud de espacio de color se puede cumplir o no.
Nota: Esta configuración controla si el framebuffer por defecto de la ventana es capaz de realizar actualizaciones y mezclas en un espacio de color determinado. No cambia la salida de las aplicaciones por sí misma. El código de renderizado de las aplicaciones todavía tendrá que optar a través de las llamadas OpenGL apropiadas para permitir que las actualizaciones y mezclas se realicen en el espacio de color dado en lugar de utilizar las operaciones lineales estándar.
Esta función se introdujo en Qt 6.0.
Véase también colorSpace().
[static] void QSurfaceFormat::setDefaultFormat(const QSurfaceFormat &format)
Establece la superficie global por defecto format.
Este formato se utiliza por defecto en QOpenGLContext, QWindow, QOpenGLWidget y clases similares.
Siempre se puede anular en cada instancia utilizando la función setFormat() de la clase en cuestión. Sin embargo, a menudo es más conveniente establecer el formato para todas las ventanas una vez al inicio de la aplicación. También garantiza un comportamiento adecuado en los casos en los que se requieren contextos compartidos, ya que establecer el formato a través de esta función garantiza que todos los contextos y superficies, incluso los creados internamente por Qt, utilizarán el mismo formato.
Véase también defaultFormat().
void QSurfaceFormat::setDepthBufferSize(int size)
Establece el tamaño mínimo del búfer de profundidad en size.
Véase también depthBufferSize().
void QSurfaceFormat::setGreenBufferSize(int size)
Establece el size deseado en bits del canal verde del buffer de color.
Véase también greenBufferSize().
void QSurfaceFormat::setMajorVersion(int major)
Establece la versión de OpenGL deseada major.
Véase también majorVersion().
void QSurfaceFormat::setMinorVersion(int minor)
Establece la versión de OpenGL deseada en minor.
La versión por defecto es 2.0.
Véase también minorVersion().
void QSurfaceFormat::setOption(QSurfaceFormat::FormatOption option, bool on = true)
Establece la opción de formato option si on es verdadero; en caso contrario, borra la opción.
Para verificar que se ha respetado una opción, compare el formato real con el formato solicitado tras la creación de la superficie/contexto.
Véase también setOptions(), options() y testOption().
void QSurfaceFormat::setOptions(QSurfaceFormat::FormatOptions options)
Establece las opciones de formato en options.
Para verificar que se ha respetado una opción, compara el formato real con el formato solicitado tras la creación de la superficie/contexto.
Véase también options() y testOption().
void QSurfaceFormat::setProfile(QSurfaceFormat::OpenGLContextProfile profile)
Establece el contexto OpenGL deseado profile.
Este ajuste se ignora si la versión de OpenGL solicitada es inferior a 3.2.
Véase también profile().
void QSurfaceFormat::setRedBufferSize(int size)
Establece el size deseado en bits del canal rojo del buffer de color.
Véase también redBufferSize().
void QSurfaceFormat::setRenderableType(QSurfaceFormat::RenderableType type)
Establece el renderizable deseado type.
Elige entre OpenGL de escritorio, OpenGL ES y OpenVG.
Véase también renderableType().
void QSurfaceFormat::setSamples(int numSamples)
Establece el número preferido de muestras por píxel cuando el multimuestreo está activado en numSamples. Por defecto, el multimuestreo está desactivado.
Véase también samples().
void QSurfaceFormat::setStencilBufferSize(int size)
Establece el tamaño preferido del búfer del esténcil en size bits.
Véase también stencilBufferSize().
void QSurfaceFormat::setStereo(bool enable)
Si enable es verdadero, activa el búfer estéreo; en caso contrario, lo desactiva.
El búfer estéreo está desactivado por defecto.
El búfer estéreo proporciona búferes de color adicionales para generar imágenes del ojo izquierdo y del ojo derecho.
Véase también stereo().
void QSurfaceFormat::setSwapBehavior(QSurfaceFormat::SwapBehavior behavior)
Establece el intercambio behavior de la superficie.
El comportamiento de intercambio especifica si se desea un búfer simple, doble o triple. El valor predeterminado, DefaultSwapBehavior, proporciona el comportamiento de intercambio predeterminado de la plataforma.
Véase también swapBehavior().
void QSurfaceFormat::setSwapInterval(int interval)
Establece el intervalo de intercambio preferido. El intervalo de intercambio especifica el número mínimo de fotogramas de vídeo que se muestran antes de que se produzca un intercambio de búfer. Esto se puede utilizar para sincronizar el dibujo GL en una ventana con el refresco vertical de la pantalla.
Establecer un valor de 0 en interval desactivará la sincronización con el refresco vertical, cualquier valor superior a 0 activará la sincronización vertical. Establecer interval a un valor más alto, por ejemplo 10, resulta en tener 10 retrocesos verticales entre cada cambio de búfer.
El intervalo por defecto es 1.
Es posible que la plataforma no admita el cambio del intervalo de intercambio. En este caso, la petición será ignorada silenciosamente.
Véase también swapInterval().
void QSurfaceFormat::setVersion(int major, int minor)
Establece las versiones de OpenGL deseadas major y minor.
La versión por defecto es 2.0.
Véase también version().
int QSurfaceFormat::stencilBufferSize() const
Devuelve el tamaño del búfer del esténcil en bits.
Véase también setStencilBufferSize().
bool QSurfaceFormat::stereo() const
Devuelve true si el búfer estéreo está activado; en caso contrario, devuelve false. El búfer estéreo está desactivado por defecto.
Véase también setStereo().
QSurfaceFormat::SwapBehavior QSurfaceFormat::swapBehavior() const
Devuelve el comportamiento de intercambio configurado.
Véase también setSwapBehavior().
int QSurfaceFormat::swapInterval() const
Devuelve el intervalo de intercambio.
Véase también setSwapInterval().
bool QSurfaceFormat::testOption(QSurfaceFormat::FormatOption option) const
Devuelve true si la opción de formato option está activada; en caso contrario devuelve false.
Véase también options().
std::pair<int, int> QSurfaceFormat::version() const
Devuelve un par std::pair<int, int> que representa la versión de OpenGL.
Útil para comprobaciones de versión, por ejemplo format.version() >= std::pair(3, 2)
Véase también setVersion().
QSurfaceFormat &QSurfaceFormat::operator=(const QSurfaceFormat &other)
Asigna other a este objeto.
No miembros relacionados
[noexcept] bool operator!=(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)
Devuelve false si todas las opciones de los dos objetos QSurfaceFormat lhs y rhs son iguales; en caso contrario devuelve true.
[noexcept] bool operator==(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)
Devuelve true si todas las opciones de los dos objetos QSurfaceFormat lhs y rhs son iguales.
© 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.