QSurfaceFormat Class
Die Klasse „QSurfaceFormat“ repräsentiert das Format eines „ QSurface “. Mehr...
| Header: | #include <QSurfaceFormat> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
Öffentliche Typen
| 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 |
| std::pair<int, int> | version() const |
| QSurfaceFormat & | operator=(const QSurfaceFormat &other) |
Statische öffentliche Elemente
| QSurfaceFormat | defaultFormat() |
| void | setDefaultFormat(const QSurfaceFormat &format) |
Zugehörige Nicht-Mitglieder
| bool | operator!=(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs) |
| bool | operator==(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs) |
Ausführliche Beschreibung
Das Format umfasst die Größe der Farbpuffer (Rot, Grün und Blau), die Größe des Alpha-Puffers, die Größe der Tiefen- und Stencil-Puffer sowie die Anzahl der Samples pro Pixel für Multisampling. Darüber hinaus enthält das Format Parameter zur Oberflächenkonfiguration, wie z. B. das OpenGL-Profil und die Version für das Rendering, die Einstellung, ob Stereopuffer aktiviert werden sollen, sowie das Swap-Verhalten.
Hinweis: Bei der Fehlerbehebung bei Problemen mit dem Kontext oder dem Fensterformat kann es hilfreich sein, die Protokollierungskategorie „ qt.qpa.gl “ zu aktivieren. Je nach Plattform werden dadurch möglicherweise nützliche Debug-Informationen zur OpenGL-Initialisierung und zu den nativen Visual- oder Framebuffer-Konfigurationen ausgegeben, denen QSurfaceFormat zugeordnet wird.
Dokumentation zu Mitgliedstypen
enum QSurfaceFormat::FormatOption
flags QSurfaceFormat::FormatOptions
Diese Aufzählung enthält Formatierungsoptionen zur Verwendung mit QSurfaceFormat.
| Konstante | Wert | Beschreibung |
|---|---|---|
QSurfaceFormat::StereoBuffers | 0x0001 | Wird verwendet, um Stereopuffer 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, ohne dass als veraltet markierte Funktionen unterstützt werden. Dies erfordert OpenGL-Version 3.0 oder höher. |
QSurfaceFormat::ResetNotification | 0x0008 | Aktiviert Benachrichtigungen über das Zurücksetzen des OpenGL-Kontexts. Der Status kann dann über die Funktion ` isValid()` des Kontexts abgefragt werden. Beachten Sie, dass das Nichtsetzen dieses Flags nicht garantiert, dass niemals ein Verlust des Kontextstatus auftritt. Darüber hinaus können einige Implementierungen den Kontextverlust unabhängig von diesem Flag melden. Plattformen, die die dynamische Aktivierung der Überwachung des Kontextverlusts unterstützen, wie beispielsweise Windows mit WGL oder Linux/X11 (xcb) mit GLX, überwachen den Status bei jedem Aufruf von ` makeCurrent()`. Weitere Informationen hierzu finden Sie unter ` isValid()`. |
QSurfaceFormat::ProtectedContent | 0x0010 | Aktiviert den Zugriff auf geschützte Inhalte. Dies ermöglicht es der GPU, mit geschützten Ressourcen (Oberflächen, Puffer, Texturen) zu arbeiten, beispielsweise mit DRM-geschützten Videoinhalten. 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
Diese Enumeration dient zur Festlegung des OpenGL-Kontextprofils in Verbindung mit den Funktionen „ QSurfaceFormat::setMajorVersion()“ und „ QSurfaceFormat::setMinorVersion()“.
Profile sind ab OpenGL 3.2 verfügbar und dienen dazu, zwischen einem eingeschränkten Kernprofil und einem Kompatibilitätsprofil zu wählen, das möglicherweise veraltete Unterstützungsfunktionen enthält.
Beachten Sie, dass das Kernprofil möglicherweise weiterhin Funktionen enthält, die veraltet sind und in einer höheren Version entfernt werden sollen. Um Zugriff auf die veralteten Funktionen des Kernprofils in der eingestellten OpenGL-Version zu erhalten, können Sie die Formatoption „ QSurfaceFormat “ mit dem Wert „ QSurfaceFormat::DeprecatedFunctions “ verwenden.
| Konstante | Wert | Beschreibung |
|---|---|---|
QSurfaceFormat::NoProfile | 0 | Die OpenGL-Version ist niedriger als 3.2. Ab Version 3.2 entspricht dies dem Kernprofil. |
QSurfaceFormat::CoreProfile | 1 | In OpenGL-Version 3.0 veraltete Funktionen sind nicht verfügbar. |
QSurfaceFormat::CompatibilityProfile | 2 | Funktionen aus früheren OpenGL-Versionen sind verfügbar. |
enum QSurfaceFormat::RenderableType
Diese Enumeration legt das Rendering-Backend für die Oberfläche fest.
| Konstante | Wert | Beschreibung |
|---|---|---|
QSurfaceFormat::DefaultRenderableType | 0x0 | Die standardmäßige, nicht näher spezifizierte Rendering-Methode |
QSurfaceFormat::OpenGL | 0x1 | OpenGL-Rendering auf dem Desktop |
QSurfaceFormat::OpenGLES | 0x2 | OpenGL ES 2.0-Rendering |
QSurfaceFormat::OpenVG | 0x4 | Open-Vector-Graphics-Rendering |
enum QSurfaceFormat::SwapBehavior
Diese Enumeration wird von QSurfaceFormat verwendet, um das Swap-Verhalten einer Oberfläche festzulegen. Das Swap-Verhalten ist für die Anwendung größtenteils transparent, wirkt sich jedoch auf Faktoren wie Rendering-Latenz und Durchsatz aus.
| Konstante | Wert | Beschreibung |
|---|---|---|
QSurfaceFormat::DefaultSwapBehavior | 0 | Das standardmäßige, nicht näher spezifizierte Swap-Verhalten der Plattform. |
QSurfaceFormat::SingleBuffer | 1 | Wird verwendet, um Single-Buffering anzufordern, was zu Flackern führen kann, wenn das OpenGL-Rendering direkt auf den Bildschirm ohne einen zwischengeschalteten Offscreen-Puffer erfolgt. |
QSurfaceFormat::DoubleBuffer | 2 | Dies ist typischerweise das Standard-Swap-Verhalten auf Desktop-Plattformen, bestehend aus einem Back-Buffer und einem Front-Buffer. Das Rendern erfolgt in den Back-Buffer, und anschließend werden der Back-Buffer und der Front-Buffer vertauscht oder der Inhalt des Back-Buffers in den Front-Buffer kopiert, je nach Implementierung. |
QSurfaceFormat::TripleBuffer | 3 | Dieses Swap-Verhalten wird manchmal verwendet, um das Risiko des Überspringens eines Frames zu verringern, wenn die Rendering-Rate gerade noch mit der Bildwiederholfrequenz des Bildschirms Schritt hält. Je nach Plattform kann dies aufgrund eines verbesserten Pipelining-Verhaltens auch zu einer etwas effizienteren Auslastung der GPU führen. Triple-Buffering geht mit einem zusätzlichen Frame an Speicherbedarf und Latenz einher und wird je nach zugrunde liegender Plattform möglicherweise nicht unterstützt. |
Dokumentation der Mitgliedsfunktionen
QSurfaceFormat::QSurfaceFormat()
Erstellt ein standardmäßig initialisiertes QSurfaceFormat.
Hinweis: Standardmäßig wird OpenGL 2.0 angefordert, da dies die höchste Portabilität zwischen Plattformen und OpenGL-Implementierungen gewährleistet.
QSurfaceFormat::QSurfaceFormat(QSurfaceFormat::FormatOptions options)
Erstellt ein `QSurfaceFormat` mit dem angegebenen Format options.
QSurfaceFormat::QSurfaceFormat(const QSurfaceFormat &other)
Erstellt 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, handelt es sich um ein standardmäßig konstruiertes ` QSurfaceFormat`.
Siehe auch ` setDefaultFormat()`.
int QSurfaceFormat::depthBufferSize() const
Gibt die Größe des Tiefenpuffers zurück.
Siehe auch „ setDepthBufferSize()“.
int QSurfaceFormat::greenBufferSize() const
Ruft die Größe des Grünkanals des Farbpuffers in Bits ab.
Siehe auch setGreenBufferSize().
bool QSurfaceFormat::hasAlpha() const
Gibt „ true “ zurück, wenn die Größe des Alpha-Puffers größer als null ist.
Das bedeutet, dass die Oberfläche möglicherweise mit pixelbezogenen Transluzenzeffekten verwendet wird.
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 OpenGL-Nebenversion zurück.
Siehe auch „ setMinorVersion()“.
QSurfaceFormat::FormatOptions QSurfaceFormat::options() const
Gibt die aktuell eingestellten Formatierungsoptionen zurück.
Siehe auch setOption(), setOptions() und testOption().
QSurfaceFormat::OpenGLContextProfile QSurfaceFormat::profile() const
Ruft das konfigurierte OpenGL-Kontextprofil ab.
Diese Einstellung wird ignoriert, wenn die angeforderte OpenGL-Version niedriger als 3.2 ist.
Siehe auch setProfile().
int QSurfaceFormat::redBufferSize() const
Ruft die Größe des roten Kanals des Farbpuffers in Bits ab.
Siehe auch setRedBufferSize().
QSurfaceFormat::RenderableType QSurfaceFormat::renderableType() const
Ruft den darstellbaren Typ ab.
Wählt zwischen Desktop-OpenGL, OpenGL ES und „ OpenVG “ aus.
Siehe auch ` setRenderableType()`.
int QSurfaceFormat::samples() const
Gibt die Anzahl der Abtastwerte 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)
Legen Sie die gewünschte „ size “ in Bits des Alphakanals des Farbpuffers fest.
Siehe auch alphaBufferSize().
void QSurfaceFormat::setBlueBufferSize(int size)
Legen Sie den gewünschten Wert für „ size “ in Bits im blauen Kanal des Farbpuffers fest.
Siehe auch blueBufferSize().
[since 6.0] void QSurfaceFormat::setColorSpace(const QColorSpace &colorSpace)
Legt den bevorzugten „ colorSpace “ fest.
Dies ermöglicht es beispielsweise, auf Plattformen, die dies unterstützen, Fenster mit sRGB-fähigen Standard-Framebuffern anzufordern.
Hinweis: Wenn der angeforderte Farbraum von der Plattform nicht unterstützt wird, wird die Anforderung ignoriert. Fragen Sie nach der Fenstererstellung den „ QSurfaceFormat “ ab, um zu überprüfen, ob die Farbraumanforderung berücksichtigt werden konnte oder nicht.
Hinweis: Diese Einstellung steuert, ob der Standard-Framebuffer des Fensters Aktualisierungen und Überblendungen in einem bestimmten Farbraum unterstützt. Sie verändert die Ausgabe der Anwendung an sich nicht. Der Rendering-Code der Anwendung muss weiterhin über die entsprechenden OpenGL-Aufrufe aktivieren, dass Aktualisierungen und Überblendungen im angegebenen Farbraum statt mit den standardmäßigen linearen Operationen durchgeführt werden.
Diese Funktion wurde in Qt 6.0 eingeführt.
Siehe auch ` colorSpace()`.
[static] void QSurfaceFormat::setDefaultFormat(const QSurfaceFormat &format)
Legt die globale Standard-Oberflächen format fest.
Dieses Format wird standardmäßig in den Klassen ` QOpenGLContext`, ` QWindow`, ` QOpenGLWidget ` und ähnlichen Klassen verwendet.
Es kann jederzeit instanzspezifisch überschrieben werden, indem die setFormat()-Funktion der jeweiligen Klasse verwendet wird. Oft ist es jedoch praktischer, das Format für alle Fenster einmalig zu Beginn der Anwendung festzulegen. Dies gewährleistet zudem ein korrektes Verhalten in Fällen, in denen gemeinsam genutzte Kontexte erforderlich sind, da die Festlegung des Formats über diese Funktion sicherstellt, dass alle Kontexte und Oberflächen – auch die von Qt intern erstellten – dasselbe Format verwenden.
Siehe auch ` defaultFormat()`.
void QSurfaceFormat::setDepthBufferSize(int size)
Stellen Sie die minimale Größe des Tiefenpuffers auf size ein.
Siehe auch depthBufferSize().
void QSurfaceFormat::setGreenBufferSize(int size)
Legen Sie den gewünschten Wert für „ size “ in Bits im grünen Kanal des Farbpuffers fest.
Siehe auch greenBufferSize().
void QSurfaceFormat::setMajorVersion(int major)
Legt die gewünschte OpenGL-Version von „ major “ fest.
Siehe auch majorVersion().
void QSurfaceFormat::setMinorVersion(int minor)
Legt die gewünschte OpenGL-Version von „ minor “ 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 zurückgesetzt.
Um zu überprüfen, ob eine Option berücksichtigt wurde, vergleichen Sie nach der Erstellung der Oberfläche/des Kontexts das tatsächliche Format mit dem angeforderten Format.
Siehe auch ` setOptions()`, ` options()` und ` testOption()`.
void QSurfaceFormat::setOptions(QSurfaceFormat::FormatOptions options)
Legt die Formatoptionen auf „ options “ fest.
Um zu überprüfen, ob eine Option berücksichtigt wurde, vergleichen Sie das tatsächliche Format nach der Erstellung der Oberfläche/des Kontexts mit dem angeforderten Format.
Siehe auch ` options()` und ` testOption()`.
void QSurfaceFormat::setProfile(QSurfaceFormat::OpenGLContextProfile profile)
Legt den gewünschten OpenGL-Kontext fest profile.
Diese Einstellung wird ignoriert, wenn die angeforderte OpenGL-Version niedriger als 3.2 ist.
Siehe auch profile().
void QSurfaceFormat::setRedBufferSize(int size)
Legen Sie den gewünschten Wert für „ size “ in den Bits des Rotkanals des Farbpuffers fest.
Siehe auch redBufferSize().
void QSurfaceFormat::setRenderableType(QSurfaceFormat::RenderableType type)
Legt den gewünschten darstellbaren „ type “ fest.
Wählt zwischen Desktop-OpenGL, OpenGL ES und OpenVG.
Siehe auch ` renderableType()`.
void QSurfaceFormat::setSamples(int numSamples)
Legen Sie die gewünschte Anzahl von Abtastwerten pro Pixel fest, wenn Multisampling aktiviert ist: numSamples. Standardmäßig ist Multisampling deaktiviert.
Siehe auch „ samples()“.
void QSurfaceFormat::setStencilBufferSize(int size)
Legen Sie die bevorzugte Größe des Stencil-Puffers auf size Bits fest.
Siehe auch stencilBufferSize().
void QSurfaceFormat::setStereo(bool enable)
Wenn „ enable “ auf „true“ gesetzt ist, wird die Stereo-Pufferung aktiviert; andernfalls wird sie deaktiviert.
Die Stereo-Pufferung ist standardmäßig deaktiviert.
Die Stereo-Pufferung stellt zusätzliche Farbpuffer zur Erzeugung von Bildern für das linke und das rechte Auge bereit.
Siehe auch stereo().
void QSurfaceFormat::setSwapBehavior(QSurfaceFormat::SwapBehavior behavior)
Legt das Swap- behavior der Oberfläche fest.
Das Swap-Verhalten legt fest, ob Einzel-, Doppel- oder Dreifach-Buffering gewünscht ist. Die Standardeinstellung „ DefaultSwapBehavior “ verwendet das Standard-Swap-Verhalten der Plattform.
Siehe auch swapBehavior().
void QSurfaceFormat::setSwapInterval(int interval)
Legt das bevorzugte Swap-Intervall fest. Das Swap-Intervall gibt die Mindestanzahl an Videobildern an, die angezeigt werden, bevor ein Pufferwechsel stattfindet. Dies kann verwendet werden, um die GL-Zeichnung in einem Fenster mit der vertikalen Bildwiederholfrequenz des Bildschirms zu synchronisieren.
Wird der Wert „ interval “ auf 0 gesetzt, wird die vertikale Synchronisation deaktiviert; jeder Wert größer als 0 aktiviert die vertikale Synchronisation. Wird „ interval “ auf einen höheren Wert gesetzt, beispielsweise 10, führt dies dazu, dass zwischen jedem Puffertausch 10 vertikale Rückläufe stattfinden.
Das Standardintervall beträgt 1.
Das Ändern des Austauschintervalls wird von der zugrunde liegenden Plattform möglicherweise nicht unterstützt. In diesem Fall wird die Anforderung 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 Stencil-Puffers in Bit zurück.
Siehe auch „ setStencilBufferSize()“.
bool QSurfaceFormat::stereo() const
Gibt „ true “ zurück, wenn die Stereo-Pufferung aktiviert ist; andernfalls wird „false“ zurückgegeben. Die Stereo-Pufferung 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 Swap-Intervall zurück.
Siehe auch „ setSwapInterval()“.
bool QSurfaceFormat::testOption(QSurfaceFormat::FormatOption option) const
Gibt „true“ zurück, wenn die Formatoption „ option “ gesetzt ist; andernfalls gibt sie „false“ zurück.
Siehe auch ` options()`.
std::pair<int, int> QSurfaceFormat::version() const
Gibt ein std::pair<int, int> zurück, das die OpenGL-Version angibt.
Nützlich für Versionsprüfungen, zum Beispiel format.version() >= std::pair(3, 2)
Siehe auch ` setVersion()`.
QSurfaceFormat &QSurfaceFormat::operator=(const QSurfaceFormat &other)
Weist diesem Objekt „ other “ zu.
Zugehörige 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 “ – identisch sind; andernfalls wird „ true “ zurückgegeben.
[noexcept] bool operator==(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)
Gibt „ true “ zurück, wenn alle Optionen der beiden „ QSurfaceFormat “-Objekte lhs und rhs identisch sind.
© 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.