En esta página

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)
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.

ConstanteValorDescripción
QSurfaceFormat::StereoBuffers0x0001Utilizado para solicitar buffers estéreo en el formato de superficie.
QSurfaceFormat::DebugContext0x0002Se utiliza para solicitar un contexto de depuración con información de depuración adicional.
QSurfaceFormat::DeprecatedFunctions0x0004Se 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::ResetNotification0x0008Habilita 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::ProtectedContent0x0010Habilita 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 .

ConstanteValorDescripción
QSurfaceFormat::NoProfile0La versión de OpenGL es inferior a la 3.2. Para 3.2 y posteriores es igual que CoreProfile.
QSurfaceFormat::CoreProfile1La funcionalidad obsoleta en OpenGL versión 3.0 no está disponible.
QSurfaceFormat::CompatibilityProfile2La funcionalidad de versiones anteriores de OpenGL está disponible.

enum QSurfaceFormat::RenderableType

Este enum especifica el backend de renderizado de la superficie.

ConstanteValorDescripción
QSurfaceFormat::DefaultRenderableType0x0El método de renderizado por defecto, no especificado
QSurfaceFormat::OpenGL0x1Renderizado OpenGL de escritorio
QSurfaceFormat::OpenGLES0x2Renderizado OpenGL ES 2.0
QSurfaceFormat::OpenVG0x4Renderizado 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.

ConstanteValorDescripción
QSurfaceFormat::DefaultSwapBehavior0El comportamiento de intercambio predeterminado y no especificado de la plataforma.
QSurfaceFormat::SingleBuffer1Se 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::DoubleBuffer2Este 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::TripleBuffer3Este 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.