QSurfaceFormat Class

Die Klasse QSurfaceFormat repräsentiert das Format einer QSurface. Mehr....

Kopfzeile: #include <QSurfaceFormat>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

Öffentliche Typen

enum ColorSpace { DefaultColorSpace, sRGBColorSpace }
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 }

Öffentliche Funktionen

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
QPair<int, int> version() const
QSurfaceFormat &operator=(const QSurfaceFormat &other)

Statische öffentliche Mitglieder

QSurfaceFormat defaultFormat()
void setDefaultFormat(const QSurfaceFormat &format)
bool operator!=(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)
bool operator==(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)

Detaillierte Beschreibung

Das Format enthält die Größe der Farbpuffer, Rot, Grün und Blau, die Größe des Alphapuffers, die Größe der Tiefen- und Schablonenpuffer und die Anzahl der Samples pro Pixel für Multisampling. Darüber hinaus enthält das Format Parameter für die Oberflächenkonfiguration, wie z. B. OpenGL-Profil und -Version für das Rendering, ob Stereopuffer aktiviert werden sollen oder nicht und das Swap-Verhalten.

Hinweis: Bei der Fehlerbehebung von Kontext- oder Fensterformatproblemen kann es hilfreich sein, die Protokollierungskategorie qt.qpa.gl zu aktivieren. Je nach Plattform kann dies nützliche Debug-Informationen ausgeben, wenn es um die OpenGL-Initialisierung und die nativen visuellen oder Framebuffer-Konfigurationen geht, auf die QSurfaceFormat abgebildet wird.

Dokumentation der Mitgliedstypen

enum QSurfaceFormat::ColorSpace

Diese Aufzählung wird verwendet, um den bevorzugten Farbraum anzugeben, der steuert, ob der zugehörige Standard-Framebuffer des Fensters in der Lage ist, Aktualisierungen und Überblendungen in einer bestimmten Kodierung anstelle der standardmäßigen linearen Operationen durchzuführen.

KonstanteWertBeschreibung
QSurfaceFormat::DefaultColorSpace0Der standardmäßige, nicht spezifizierte Farbraum.
QSurfaceFormat::sRGBColorSpace1Wenn GL_ARB_framebuffer_sRGB oder GL_EXT_framebuffer_sRGB von der Plattform unterstützt wird und dieser Wert gesetzt ist, wird das Fenster mit einem sRGB-fähigen Standard-Framebuffer erstellt. Beachten Sie, dass einige Plattformen Fenster mit einem sRGB-fähigen Standard-Framebuffer zurückgeben können, auch wenn dies nicht explizit angefordert wird.

enum QSurfaceFormat::FormatOption
flags QSurfaceFormat::FormatOptions

Diese Aufzählung enthält Formatoptionen für die Verwendung mit QSurfaceFormat.

KonstanteWertBeschreibung
QSurfaceFormat::StereoBuffers0x0001Wird verwendet, um Stereo-Puffer im Oberflächenformat anzufordern.
QSurfaceFormat::DebugContext0x0002Wird verwendet, um einen Debug-Kontext mit zusätzlichen Debugging-Informationen anzufordern.
QSurfaceFormat::DeprecatedFunctions0x0004Wird verwendet, um anzufordern, dass veraltete Funktionen in das OpenGL-Kontextprofil aufgenommen werden. Wenn nicht angegeben, sollten Sie einen vorwärtskompatiblen Kontext erhalten, der keine als veraltet gekennzeichneten Funktionen unterstützt. Dies erfordert OpenGL Version 3.0 oder höher.
QSurfaceFormat::ResetNotification0x0008Aktiviert Benachrichtigungen über das Zurücksetzen des OpenGL-Kontextes. Der Status ist dann über die Funktion isValid() des Kontexts abfragbar. Beachten Sie, dass das Nichtsetzen dieses Flags nicht garantiert, dass der Verlust des Kontextstatus niemals auftritt. Darüber hinaus können sich einige Implementierungen dafür entscheiden, Kontextverluste unabhängig von diesem Flag zu melden. Plattformen, die das dynamische Aktivieren der Überwachung des Kontextverlustes unterstützen, wie z.B. Windows mit WGL oder Linux/X11 (xcb) mit GLX, werden den Status bei jedem Aufruf von makeCurrent() überwachen. Siehe isValid() für weitere Informationen dazu.
QSurfaceFormat::ProtectedContent0x0010Ermöglicht den Zugriff auf geschützte Inhalte. Dies ermöglicht der GPU, auf geschützte Ressourcen (Oberflächen, Puffer, Texturen) zuzugreifen, zum Beispiel DRM-geschützte Videoinhalte. Derzeit nur für EGL implementiert.

Der Typ FormatOptions ist ein Typedef für QFlags<FormatOption>. Er speichert eine OR-Kombination von FormatOption-Werten.

enum QSurfaceFormat::OpenGLContextProfile

Dieses Enum wird verwendet, um das OpenGL-Kontextprofil in Verbindung mit QSurfaceFormat::setMajorVersion() und QSurfaceFormat::setMinorVersion() anzugeben.

Profile sind in OpenGL 3.2 und höher verfügbar und werden verwendet, um zwischen einem eingeschränkten Kernprofil und einem Kompatibilitätsprofil zu wählen, das veraltete Unterstützungsfunktionen enthalten kann.

Beachten Sie, dass das Kernprofil noch Funktionen enthalten kann, die veraltet sind und in einer höheren Version entfernt werden sollen. Um Zugriff auf die veraltete Funktionalität für das Kernprofil in der eingestellten OpenGL-Version zu erhalten, können Sie die QSurfaceFormat Formatoption QSurfaceFormat::DeprecatedFunctions verwenden.

KonstanteWertBeschreibung
QSurfaceFormat::NoProfile0OpenGL-Version ist niedriger als 3.2. Für 3.2 und neuer ist dies dasselbe wie CoreProfile.
QSurfaceFormat::CoreProfile1Funktionen, die in OpenGL Version 3.0 veraltet sind, sind nicht verfügbar.
QSurfaceFormat::CompatibilityProfile2Funktionalitäten aus früheren OpenGL-Versionen sind verfügbar.

enum QSurfaceFormat::RenderableType

Diese Aufzählung gibt das Rendering-Backend für die Oberfläche an.

KonstanteWertBeschreibung
QSurfaceFormat::DefaultRenderableType0x0Die standardmäßige, nicht spezifizierte Rendering-Methode
QSurfaceFormat::OpenGL0x1Desktop-OpenGL-Rendering
QSurfaceFormat::OpenGLES0x2OpenGL ES 2.0-Rendering
QSurfaceFormat::OpenVG0x4Open Vector Graphics-Rendering

enum QSurfaceFormat::SwapBehavior

Dieses Enum wird von QSurfaceFormat verwendet, um das Swap-Verhalten einer Oberfläche festzulegen. Das Swap-Verhalten ist für die Anwendung größtenteils transparent, beeinflusst aber Faktoren wie die Rendering-Latenz und den Durchsatz.

KonstanteWertBeschreibung
QSurfaceFormat::DefaultSwapBehavior0Das standardmäßige, nicht spezifizierte Swap-Verhalten der Plattform.
QSurfaceFormat::SingleBuffer1Wird verwendet, um Einzelpufferung anzufordern, was zu Flackern führen kann, wenn das OpenGL-Rendering direkt auf dem Bildschirm ohne einen Zwischenpuffer außerhalb des Bildschirms erfolgt.
QSurfaceFormat::DoubleBuffer2Dies ist normalerweise das Standard-Swap-Verhalten auf Desktop-Plattformen, bestehend aus einem Back-Buffer und einem Front-Buffer. Das Rendering erfolgt in den Back-Buffer, und dann werden Back-Buffer und Front-Buffer getauscht oder der Inhalt des Back-Buffers wird in den Front-Buffer kopiert, je nach Implementierung.
QSurfaceFormat::TripleBuffer3Dieses Swap-Verhalten wird manchmal verwendet, um das Risiko zu verringern, dass ein Frame übersprungen wird, wenn die Rendering-Rate nur knapp mit der Bildwiederholrate mithalten kann. Je nach Plattform kann es auch zu einer etwas effizienteren Nutzung der GPU aufgrund eines verbesserten Pipelining-Verhaltens führen. Die dreifache Pufferung geht mit einem zusätzlichen Frame an Speicherverbrauch und Latenz einher und wird je nach zugrunde liegender Plattform möglicherweise nicht unterstützt.

Dokumentation der Mitgliedsfunktionen

QSurfaceFormat::QSurfaceFormat()

Konstruiert ein standardmäßig initialisiertes QSurfaceFormat.

Hinweis: Standardmäßig wird OpenGL 2.0 angefordert, da dies den höchsten Grad an Portabilität zwischen Plattformen und OpenGL-Implementierungen bietet.

QSurfaceFormat::QSurfaceFormat(QSurfaceFormat::FormatOptions options)

Konstruiert ein QSurfaceFormat mit dem angegebenen Format options.

QSurfaceFormat::QSurfaceFormat(const QSurfaceFormat &other)

Konstruiert eine Kopie von other.

[noexcept] QSurfaceFormat::~QSurfaceFormat()

Zerstört die QSurfaceFormat.

int QSurfaceFormat::alphaBufferSize() const

Ermittelt die Größe des Alphakanals des Farbpuffers in Bits.

Siehe auch setAlphaBufferSize().

int QSurfaceFormat::blueBufferSize() const

Ermittelt die Größe des blauen Kanals des Farbpuffers in Bits.

Siehe auch setBlueBufferSize().

const QColorSpace &QSurfaceFormat::colorSpace() const

Gibt den Farbraum zurück.

Siehe auch setColorSpace().

[static] QSurfaceFormat QSurfaceFormat::defaultFormat()

Gibt das globale Standard-Oberflächenformat zurück.

Wenn setDefaultFormat() nicht aufgerufen wird, ist dies eine standardmäßig konstruierte QSurfaceFormat.

Siehe auch setDefaultFormat().

int QSurfaceFormat::depthBufferSize() const

Gibt die Größe des Tiefenpuffers zurück.

Siehe auch setDepthBufferSize().

int QSurfaceFormat::greenBufferSize() const

Ermittelt die Größe des Grünkanals des Farbpuffers in Bits.

Siehe auch setGreenBufferSize().

bool QSurfaceFormat::hasAlpha() const

Gibt true zurück, wenn die Größe des Alphapuffers größer als Null ist.

Dies bedeutet, dass die Oberfläche mit Transluzenzeffekten pro Pixel verwendet werden kann.

int QSurfaceFormat::majorVersion() const

Gibt die Hauptversion von OpenGL zurück.

Die Standardversion ist 2.0.

Siehe auch setMajorVersion().

int QSurfaceFormat::minorVersion() const

Gibt die kleinere OpenGL-Version zurück.

Siehe auch setMinorVersion().

QSurfaceFormat::FormatOptions QSurfaceFormat::options() const

Gibt die aktuell eingestellten Formatoptionen zurück.

Siehe auch setOption(), setOptions(), und testOption().

QSurfaceFormat::OpenGLContextProfile QSurfaceFormat::profile() const

Holt das konfigurierte OpenGL-Kontextprofil.

Diese Einstellung wird ignoriert, wenn die angeforderte OpenGL-Version kleiner als 3.2 ist.

Siehe auch setProfile().

int QSurfaceFormat::redBufferSize() const

Ermittelt die Größe des Rotkanals des Farbpuffers in Bits.

Siehe auch setRedBufferSize().

QSurfaceFormat::RenderableType QSurfaceFormat::renderableType() const

Ruft den Rendering-Typ ab.

Wählt zwischen Desktop OpenGL, OpenGL ES und OpenVG aus.

Siehe auch setRenderableType().

int QSurfaceFormat::samples() const

Gibt die Anzahl der Samples pro Pixel zurück, wenn Multisampling aktiviert ist, oder -1, wenn Multisampling deaktiviert ist. Der Standardrückgabewert ist -1.

Siehe auch setSamples().

void QSurfaceFormat::setAlphaBufferSize(int size)

Stellen Sie die gewünschte size in Bits des Alphakanals des Farbpuffers ein.

Siehe auch alphaBufferSize().

void QSurfaceFormat::setBlueBufferSize(int size)

Stellen Sie die gewünschte size in Bits des blauen Kanals des Farbpuffers ein.

Siehe auch blueBufferSize().

[since 6.0] void QSurfaceFormat::setColorSpace(const QColorSpace &colorSpace)

Legt die bevorzugte colorSpace fest.

Dies ermöglicht zum Beispiel die Anforderung von Fenstern mit Standard-Framebuffern, die sRGB-fähig sind, auf Plattformen, die dies unterstützen.

Hinweis: Wenn der angeforderte Farbraum nicht von der Plattform unterstützt wird, wird die Anforderung ignoriert. Fragen Sie nach der Fenstererstellung QSurfaceFormat ab, um zu überprüfen, ob die Farbraumanforderung erfüllt werden kann oder nicht.

Hinweis: Diese Einstellung steuert, ob der Standard-Framebuffer des Fensters in der Lage ist, Aktualisierungen und Überblendungen in einem bestimmten Farbraum durchzuführen. Sie ändert nicht die Ausgabe der Anwendungen selbst. Der Rendering-Code der Anwendung muss immer noch über die entsprechenden OpenGL-Aufrufe aktiviert werden, um Aktualisierungen und Überblendungen im gegebenen Farbraum zu ermöglichen, anstatt die standardmäßigen linearen Operationen zu verwenden.

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch colorSpace().

[static] void QSurfaceFormat::setDefaultFormat(const QSurfaceFormat &format)

Legt die globale Standardoberfläche format fest.

Dieses Format wird standardmäßig in QOpenGLContext, QWindow, QOpenGLWidget und ähnlichen Klassen verwendet.

Es kann jederzeit für jede einzelne Instanz mit der Funktion setFormat() der betreffenden Klasse überschrieben werden. Oft ist es jedoch bequemer, das Format für alle Fenster einmal beim Start der Anwendung zu setzen. Es garantiert auch ein korrektes Verhalten in Fällen, in denen gemeinsame Kontexte benötigt werden, da das Setzen des Formats über diese Funktion garantiert, dass alle Kontexte und Oberflächen, auch die von Qt intern erstellten, das gleiche Format verwenden.

Hinweis: Wenn Sie Qt::AA_ShareOpenGLContexts setzen, wird dringend empfohlen, den Aufruf dieser Funktion vor der Konstruktion von QGuiApplication oder QApplication zu platzieren. Andernfalls wird format nicht auf den globalen Freigabekontext angewandt, was zu Problemen bei der späteren Freigabe des Kontextes führen kann.

Siehe auch defaultFormat().

void QSurfaceFormat::setDepthBufferSize(int size)

Setzen Sie die Mindestgröße des Tiefenpuffers auf size.

Siehe auch depthBufferSize().

void QSurfaceFormat::setGreenBufferSize(int size)

Stellen Sie die gewünschte size in Bits des grünen Kanals des Farbpuffers ein.

Siehe auch greenBufferSize().

void QSurfaceFormat::setMajorVersion(int major)

Legt die gewünschte major OpenGL-Version fest.

Siehe auch majorVersion().

void QSurfaceFormat::setMinorVersion(int minor)

Legt die gewünschte minor OpenGL-Version fest.

Die Standardversion ist 2.0.

Siehe auch minorVersion().

void QSurfaceFormat::setOption(QSurfaceFormat::FormatOption option, bool on = true)

Setzt die Formatoption option, wenn on wahr ist; andernfalls wird die Option gelöscht.

Um zu überprüfen, ob eine Option beachtet wurde, vergleichen Sie das tatsächliche Format mit dem angeforderten Format nach der Oberflächen-/Kontexterstellung.

Siehe auch setOptions(), options(), und testOption().

void QSurfaceFormat::setOptions(QSurfaceFormat::FormatOptions options)

Setzt die Formatoptionen auf options.

Um zu überprüfen, ob eine Option beachtet wurde, vergleichen Sie das tatsächliche Format mit dem angeforderten Format nach der Oberflächen-/Kontexterstellung.

Siehe auch options() und testOption().

void QSurfaceFormat::setProfile(QSurfaceFormat::OpenGLContextProfile profile)

Setzt den gewünschten OpenGL-Kontext profile.

Diese Einstellung wird ignoriert, wenn die angeforderte OpenGL-Version kleiner als 3.2 ist.

Siehe auch profile().

void QSurfaceFormat::setRedBufferSize(int size)

Stellen Sie die gewünschte size in Bits des Rotkanals des Farbpuffers ein.

Siehe auch redBufferSize().

void QSurfaceFormat::setRenderableType(QSurfaceFormat::RenderableType type)

Legt das gewünschte Rendering fest type.

Wählt zwischen Desktop OpenGL, OpenGL ES und OpenVG.

Siehe auch renderableType().

void QSurfaceFormat::setSamples(int numSamples)

Setzen Sie die bevorzugte Anzahl von Abtastungen pro Pixel bei aktiviertem Multisampling auf numSamples. Standardmäßig ist das Multisampling deaktiviert.

Siehe auch samples().

void QSurfaceFormat::setStencilBufferSize(int size)

Setzen Sie die bevorzugte Schablonenpuffergröße auf size bits.

Siehe auch stencilBufferSize().

void QSurfaceFormat::setStereo(bool enable)

Wenn enable true ist, wird die Stereopufferung aktiviert; andernfalls wird sie deaktiviert.

Die Stereopufferung ist standardmäßig deaktiviert.

Die Stereopufferung bietet zusätzliche Farbpuffer, um Bilder für das linke und das rechte Auge zu erzeugen.

Siehe auch stereo().

void QSurfaceFormat::setSwapBehavior(QSurfaceFormat::SwapBehavior behavior)

Legen Sie das Tauschverhalten behavior der Oberfläche fest.

Das Swap-Verhalten gibt an, ob Einfach-, Doppel- oder Dreifachpufferung gewünscht ist. Die Voreinstellung DefaultSwapBehavior gibt das Standard-Swap-Verhalten der Plattform vor.

Siehe auch swapBehavior().

void QSurfaceFormat::setSwapInterval(int interval)

Legt das bevorzugte Auslagerungsintervall fest. Das Swap-Intervall gibt die Mindestanzahl von Videobildern an, die angezeigt werden, bevor ein Pufferwechsel stattfindet. Dies kann verwendet werden, um die GL-Zeichnung in einem Fenster mit der vertikalen Aktualisierung des Bildschirms zu synchronisieren.

Ein interval Wert von 0 schaltet die vertikale Synchronisierung aus, ein Wert über 0 schaltet die vertikale Synchronisierung ein. Wenn Sie interval auf einen höheren Wert, z. B. 10, einstellen, werden zwischen jedem Pufferwechsel 10 vertikale Wiederholungen durchgeführt.

Das Standardintervall ist 1.

Das Ändern des Intervalls für den Pufferwechsel wird von der zugrunde liegenden Plattform möglicherweise nicht unterstützt. In diesem Fall wird die Anfrage stillschweigend ignoriert.

Siehe auch swapInterval().

void QSurfaceFormat::setVersion(int major, int minor)

Legt die gewünschten OpenGL-Versionen major und minor fest.

Die Standardversion ist 2.0.

Siehe auch version().

int QSurfaceFormat::stencilBufferSize() const

Gibt die Größe des Schablonenpuffers in Bits zurück.

Siehe auch setStencilBufferSize().

bool QSurfaceFormat::stereo() const

Gibt true zurück, wenn die Stereopufferung aktiviert ist; andernfalls wird false zurückgegeben. Die Stereopufferung ist standardmäßig deaktiviert.

Siehe auch setStereo().

QSurfaceFormat::SwapBehavior QSurfaceFormat::swapBehavior() const

Gibt das konfigurierte Swap-Verhalten zurück.

Siehe auch setSwapBehavior().

int QSurfaceFormat::swapInterval() const

Gibt das Tauschintervall zurück.

Siehe auch setSwapInterval().

bool QSurfaceFormat::testOption(QSurfaceFormat::FormatOption option) const

Gibt true zurück, wenn die Formatoption option gesetzt ist; andernfalls wird false zurückgegeben.

Siehe auch options().

QPair<int, int> QSurfaceFormat::version() const

Gibt eine QPair<int, int> zurück, die die OpenGL-Version darstellt.

Nützlich für Versionsprüfungen, zum Beispiel format.version() >= qMakePair(3, 2)

Siehe auch setVersion().

QSurfaceFormat &QSurfaceFormat::operator=(const QSurfaceFormat &other)

Weist diesem Objekt other zu.

Verwandte Nicht-Mitglieder

[noexcept] bool operator!=(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)

Gibt false zurück, wenn alle Optionen der beiden Objekte QSurfaceFormat lhs und rhs gleich sind; andernfalls wird true zurückgegeben.

[noexcept] bool operator==(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)

Gibt true zurück, wenn alle Optionen der beiden Objekte QSurfaceFormat lhs und rhs gleich sind.

© 2025 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.