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) |
Verwandte Nicht-Mitglieder
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.
Konstante | Wert | Beschreibung |
---|---|---|
QSurfaceFormat::DefaultColorSpace | 0 | Der standardmäßige, nicht spezifizierte Farbraum. |
QSurfaceFormat::sRGBColorSpace | 1 | Wenn 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.
Konstante | Wert | Beschreibung |
---|---|---|
QSurfaceFormat::StereoBuffers | 0x0001 | Wird verwendet, um Stereo-Puffer im Oberflächenformat anzufordern. |
QSurfaceFormat::DebugContext | 0x0002 | Wird verwendet, um einen Debug-Kontext mit zusätzlichen Debugging-Informationen anzufordern. |
QSurfaceFormat::DeprecatedFunctions | 0x0004 | Wird 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::ResetNotification | 0x0008 | Aktiviert 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::ProtectedContent | 0x0010 | Ermö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.
Konstante | Wert | Beschreibung |
---|---|---|
QSurfaceFormat::NoProfile | 0 | OpenGL-Version ist niedriger als 3.2. Für 3.2 und neuer ist dies dasselbe wie CoreProfile. |
QSurfaceFormat::CoreProfile | 1 | Funktionen, die in OpenGL Version 3.0 veraltet sind, sind nicht verfügbar. |
QSurfaceFormat::CompatibilityProfile | 2 | Funktionalitä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.
Konstante | Wert | Beschreibung |
---|---|---|
QSurfaceFormat::DefaultRenderableType | 0x0 | Die standardmäßige, nicht spezifizierte Rendering-Methode |
QSurfaceFormat::OpenGL | 0x1 | Desktop-OpenGL-Rendering |
QSurfaceFormat::OpenGLES | 0x2 | OpenGL ES 2.0-Rendering |
QSurfaceFormat::OpenVG | 0x4 | Open 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.
Konstante | Wert | Beschreibung |
---|---|---|
QSurfaceFormat::DefaultSwapBehavior | 0 | Das standardmäßige, nicht spezifizierte Swap-Verhalten der Plattform. |
QSurfaceFormat::SingleBuffer | 1 | Wird 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::DoubleBuffer | 2 | Dies 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::TripleBuffer | 3 | Dieses 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.