Auf dieser Seite

QShaderDescription Class

Beschreibt die Schnittstelle eines Shaders. Mehr...

Header: #include <qshaderdescription.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Seit: Qt 6.6

Öffentliche Typen

(since 6.6) struct BlockVariable
(since 6.6) struct BuiltinVariable
(since 6.6) struct InOutVariable
(since 6.6) struct PushConstantBlock
(since 6.6) struct StorageBlock
(since 6.6) struct UniformBlock
enum BuiltinType { PositionBuiltin, PointSizeBuiltin, ClipDistanceBuiltin, CullDistanceBuiltin, VertexIdBuiltin, …, ViewIndexBuiltin }
enum ImageFlag { ReadOnlyImage, WriteOnlyImage }
flags ImageFlags
enum ImageFormat { ImageFormatUnknown, ImageFormatRgba32f, ImageFormatRgba16f, ImageFormatR32f, ImageFormatRgba8, …, ImageFormatR8ui }
enum QualifierFlag { QualifierReadOnly, QualifierWriteOnly, QualifierCoherent, QualifierVolatile, QualifierRestrict }
flags QualifierFlags
enum TessellationMode { UnknownTessellationMode, TrianglesTessellationMode, QuadTessellationMode, IsolineTessellationMode }
enum TessellationPartitioning { UnknownTessellationPartitioning, EqualTessellationPartitioning, FractionalEvenTessellationPartitioning, FractionalOddTessellationPartitioning }
enum TessellationWindingOrder { UnknownTessellationWindingOrder, CwTessellationWindingOrder, CcwTessellationWindingOrder }
enum VariableType { Unknown, Float, Vec2, Vec3, Vec4, …, Half4 }

Öffentliche Funktionen

QShaderDescription()
QShaderDescription(const QShaderDescription &other)
~QShaderDescription()
QList<QShaderDescription::InOutVariable> combinedImageSamplers() const
std::array<uint, 3> computeShaderLocalSize() const
QList<QShaderDescription::BuiltinVariable> inputBuiltinVariables() const
QList<QShaderDescription::InOutVariable> inputVariables() const
bool isValid() const
QList<QShaderDescription::BuiltinVariable> outputBuiltinVariables() const
QList<QShaderDescription::InOutVariable> outputVariables() const
QList<QShaderDescription::PushConstantBlock> pushConstantBlocks() const
void serialize(QDataStream *stream, int version) const
QList<QShaderDescription::StorageBlock> storageBlocks() const
QList<QShaderDescription::InOutVariable> storageImages() const
QShaderDescription::TessellationMode tessellationMode() const
uint tessellationOutputVertexCount() const
QShaderDescription::TessellationPartitioning tessellationPartitioning() const
QShaderDescription::TessellationWindingOrder tessellationWindingOrder() const
QByteArray toJson() const
QList<QShaderDescription::UniformBlock> uniformBlocks() const
QShaderDescription &operator=(const QShaderDescription &other)

Statische öffentliche Mitglieder

QShaderDescription deserialize(QDataStream *stream, int version)
bool operator==(const QShaderDescription &lhs, const QShaderDescription &rhs)

Ausführliche Beschreibung

Warnung: Die Klassenfamilie „ QRhi “ im Qt GUI-Modul, einschließlich „ QShader “ und „QShaderDescription“, bietet nur eingeschränkte Kompatibilitätsgarantien. Für diese Klassen gibt es keine Garantien hinsichtlich der Quellcode- oder Binärkompatibilität, was bedeutet, dass die API nur mit der Qt-Version funktioniert, für die die Anwendung entwickelt wurde. Änderungen, die zu einer Inkompatibilität auf Quellcodeebene führen, sollen jedoch auf ein Minimum beschränkt werden und werden nur in Minor-Releases (6.7, 6.8 usw.) vorgenommen. Um diese Klassen in einer Anwendung zu verwenden, verknüpfen Sie mit „ Qt::GuiPrivate “ (bei Verwendung von CMake) und binden Sie die Header mit dem Präfix „ rhi “ ein, zum Beispiel „ #include <rhi/qshaderdescription.h> “.

Ein Shader verfügt in der Regel über eine Reihe von Ein- und Ausgängen. Ein Vertex-Shader hat beispielsweise eine Reihe von Eingabevariablen und kann einen oder mehrere Uniform-Puffer verwenden, um auf Daten (z. B. eine Model-View-Matrix) zuzugreifen, die von der Anwendung bereitgestellt werden. Der Shader für die Fragmentstufe erhält (in einem einfachen Aufbau) Daten aus der Vertexstufe und kann zudem auf Daten aus Uniform-Buffern, Bildern und Samplern zurückgreifen.

Was die Vertex-Eingaben und das Layout der Uniform-Buffer betrifft (wie lauten die Namen der Elemente? Wie groß sind sie, welchen Offset haben sie usw.), müssen Anwendungen und Frameworks diese Informationen möglicherweise zur Laufzeit dynamisch ermitteln. Dies ist typischerweise der Fall, wenn der Shader nicht integriert ist, sondern von einer externen Instanz, wie beispielsweise dem Benutzer, bereitgestellt wird.

Moderne und schlanke Grafik-APIs bieten möglicherweise keine Möglichkeit mehr, Shader-Reflexionsinformationen zur Laufzeit abzufragen. Daher werden solche Daten nun automatisch von „ QShaderBaker “ generiert und als „QShaderDescription“-Objekt für jeden einzelnen „ QShader “ bereitgestellt.

Beispiel

Betrachten Sie den folgenden Vertex-Shader:

#version 440

layout(location = 0) in vec4 position;
layout(location = 1) in vec3 color;
layout(location = 0) out vec3 v_color;

layout(std140, binding = 0) uniform buf {
    mat4 mvp;
    float opacity;
} ubuf;

void main()
{
    v_color = color;
    gl_Position = ubuf.mvp * position;
}

Dieser Shader hat zwei Eingaben: „ position “ an Position 0 mit dem Typ „ vec4 “ und „ color “ an Position 1 mit dem Typ „ vec3 “. Er hat eine Ausgabe: „ v_color “, obwohl diese für Anwendungen in der Regel nicht von Interesse ist. Wichtiger ist jedoch, dass es einen einheitlichen Block an Bindung 0 mit einer Größe von 68 Byte und zwei Elementen gibt: eine 4x4-Matrix namens „ mvp “ am Offset 0 und einen Float-Wert „ opacity “ am Offset 64.

All dies wird durch ein `QShaderDescription`-Objekt beschrieben. `QShaderDescription` kann über ` QDataStream` in JSON und in ein binäres Format serialisiert sowie aus diesem binären Format deserialisiert werden. In der Praxis ist dies selten erforderlich, da „ QShader “ sich automatisch um die zugehörige „QShaderDescription“ kümmert. Würde die „QShaderDescription“ des oben genannten Shaders jedoch als JSON ausgegeben (wie es die Option „ -d “ des Tools „ qsb “ tut), sähe sie wie folgt aus:

{
    "inputs": [
        {
            "location": 1,
            "name": "color",
            "type": "vec3"
        },
        {
            "location": 0,
            "name": "position",
            "type": "vec4"
        }
    ],
    "outputs": [
        {
            "location": 0,
            "name": "v_color",
            "type": "vec3"
        }
    ],
    "uniformBlocks": [
        {
            "binding": 0,
            "blockName": "buf",
            "members": [
                {
                    "matrixStride": 16,
                    "name": "mvp",
                    "offset": 0,
                    "size": 64,
                    "type": "mat4"
                },
                {
                    "name": "opacity",
                    "offset": 64,
                    "size": 4,
                    "type": "float"
                }
            ],
            "set": 0,
            "size": 68,
            "structName": "ubuf"
        }
    ]
}

Die C++-API ermöglicht den Zugriff auf eine Datenstruktur wie die oben gezeigte. Der Einfachheit halber enthalten die inneren Strukturen nur öffentliche Datenelemente, auch unter Berücksichtigung der Tatsache, dass sich ihr Layout in Zukunft wahrscheinlich nicht ändern wird.

Siehe auch QShaderBaker und QShader.

Dokumentation zu Mitgliedstypen

enum QShaderDescription::BuiltinType

Eingebauter Variablentyp.

KonstanteWert
QShaderDescription::PositionBuiltin0
QShaderDescription::PointSizeBuiltin1
QShaderDescription::ClipDistanceBuiltin3
QShaderDescription::CullDistanceBuiltin4
QShaderDescription::VertexIdBuiltin5
QShaderDescription::InstanceIdBuiltin6
QShaderDescription::PrimitiveIdBuiltin7
QShaderDescription::InvocationIdBuiltin8
QShaderDescription::LayerBuiltin9
QShaderDescription::ViewportIndexBuiltin10
QShaderDescription::TessLevelOuterBuiltin11
QShaderDescription::TessLevelInnerBuiltin12
QShaderDescription::TessCoordBuiltin13
QShaderDescription::PatchVerticesBuiltin14
QShaderDescription::FragCoordBuiltin15
QShaderDescription::PointCoordBuiltin16
QShaderDescription::FrontFacingBuiltin17
QShaderDescription::SampleIdBuiltin18
QShaderDescription::SamplePositionBuiltin19
QShaderDescription::SampleMaskBuiltin20
QShaderDescription::FragDepthBuiltin22
QShaderDescription::NumWorkGroupsBuiltin24
QShaderDescription::WorkgroupSizeBuiltin25
QShaderDescription::WorkgroupIdBuiltin26
QShaderDescription::LocalInvocationIdBuiltin27
QShaderDescription::GlobalInvocationIdBuiltin28
QShaderDescription::LocalInvocationIndexBuiltin29
QShaderDescription::VertexIndexBuiltin42
QShaderDescription::InstanceIndexBuiltin43
QShaderDescription::ViewIndexBuiltin4440

enum QShaderDescription::ImageFlag
flags QShaderDescription::ImageFlags

Bildflaggen.

KonstanteWert
QShaderDescription::ReadOnlyImage1 << 0
QShaderDescription::WriteOnlyImage1 << 1

Der Typ `ImageFlags` ist ein `typedef` für ` QFlags<ImageFlag>`. Er speichert eine ODER-Kombination von `ImageFlag`-Werten.

enum QShaderDescription::ImageFormat

Bildformat.

KonstanteWert
QShaderDescription::ImageFormatUnknown0
QShaderDescription::ImageFormatRgba32f1
QShaderDescription::ImageFormatRgba16f2
QShaderDescription::ImageFormatR32f3
QShaderDescription::ImageFormatRgba84
QShaderDescription::ImageFormatRgba8Snorm5
QShaderDescription::ImageFormatRg32f6
QShaderDescription::ImageFormatRg16f7
QShaderDescription::ImageFormatR11fG11fB10f8
QShaderDescription::ImageFormatR16f9
QShaderDescription::ImageFormatRgba1610
QShaderDescription::ImageFormatRgb10A211
QShaderDescription::ImageFormatRg1612
QShaderDescription::ImageFormatRg813
QShaderDescription::ImageFormatR1614
QShaderDescription::ImageFormatR815
QShaderDescription::ImageFormatRgba16Snorm16
QShaderDescription::ImageFormatRg16Snorm17
QShaderDescription::ImageFormatRg8Snorm18
QShaderDescription::ImageFormatR16Snorm19
QShaderDescription::ImageFormatR8Snorm20
QShaderDescription::ImageFormatRgba32i21
QShaderDescription::ImageFormatRgba16i22
QShaderDescription::ImageFormatRgba8i23
QShaderDescription::ImageFormatR32i24
QShaderDescription::ImageFormatRg32i25
QShaderDescription::ImageFormatRg16i26
QShaderDescription::ImageFormatRg8i27
QShaderDescription::ImageFormatR16i28
QShaderDescription::ImageFormatR8i29
QShaderDescription::ImageFormatRgba32ui30
QShaderDescription::ImageFormatRgba16ui31
QShaderDescription::ImageFormatRgba8ui32
QShaderDescription::ImageFormatR32ui33
QShaderDescription::ImageFormatRgb10a2ui34
QShaderDescription::ImageFormatRg32ui35
QShaderDescription::ImageFormatRg16ui36
QShaderDescription::ImageFormatRg8ui37
QShaderDescription::ImageFormatR16ui38
QShaderDescription::ImageFormatR8ui39

enum QShaderDescription::QualifierFlag
flags QShaderDescription::QualifierFlags

Qualifikationsflags.

KonstanteWert
QShaderDescription::QualifierReadOnly1 << 0
QShaderDescription::QualifierWriteOnly1 << 1
QShaderDescription::QualifierCoherent1 << 2
QShaderDescription::QualifierVolatile1 << 3
QShaderDescription::QualifierRestrict1 << 4

Der Typ „QualifierFlags“ ist ein typedef für „QFlags<QualifierFlag>“. Er speichert eine ODER-Kombination von „QualifierFlag“-Werten.

enum QShaderDescription::TessellationMode

KonstanteWert
QShaderDescription::UnknownTessellationMode0
QShaderDescription::TrianglesTessellationMode1
QShaderDescription::QuadTessellationMode2
QShaderDescription::IsolineTessellationMode3

enum QShaderDescription::TessellationPartitioning

KonstanteWert
QShaderDescription::UnknownTessellationPartitioning0
QShaderDescription::EqualTessellationPartitioning1
QShaderDescription::FractionalEvenTessellationPartitioning2
QShaderDescription::FractionalOddTessellationPartitioning3

enum QShaderDescription::TessellationWindingOrder

KonstanteWert
QShaderDescription::UnknownTessellationWindingOrder0
QShaderDescription::CwTessellationWindingOrder1
QShaderDescription::CcwTessellationWindingOrder2

enum QShaderDescription::VariableType

Bezeichnet den Typ einer Variablen oder eines Blockelements.

KonstanteWertBeschreibung
QShaderDescription::Unknown0 
QShaderDescription::Float1 
QShaderDescription::Vec22 
QShaderDescription::Vec33 
QShaderDescription::Vec44 
QShaderDescription::Mat25 
QShaderDescription::Mat2x36 
QShaderDescription::Mat2x47 
QShaderDescription::Mat38 
QShaderDescription::Mat3x29 
QShaderDescription::Mat3x410 
QShaderDescription::Mat411 
QShaderDescription::Mat4x212 
QShaderDescription::Mat4x313 
QShaderDescription::Int14 
QShaderDescription::Int215 
QShaderDescription::Int316 
QShaderDescription::Int417 
QShaderDescription::Uint18 
QShaderDescription::Uint219 
QShaderDescription::Uint320 
QShaderDescription::Uint421 
QShaderDescription::Bool22 
QShaderDescription::Bool223 
QShaderDescription::Bool324 
QShaderDescription::Bool425 
QShaderDescription::Double26 
QShaderDescription::Double227 
QShaderDescription::Double328 
QShaderDescription::Double429 
QShaderDescription::DMat230 
QShaderDescription::DMat2x331 
QShaderDescription::DMat2x432 
QShaderDescription::DMat333 
QShaderDescription::DMat3x234 
QShaderDescription::DMat3x435 
QShaderDescription::DMat436 
QShaderDescription::DMat4x237 
QShaderDescription::DMat4x338 
QShaderDescription::Sampler1D39 
QShaderDescription::Sampler2D40 
QShaderDescription::Sampler2DMS41 
QShaderDescription::Sampler3D42 
QShaderDescription::SamplerCube43 
QShaderDescription::Sampler1DArray44 
QShaderDescription::Sampler2DArray45 
QShaderDescription::Sampler2DMSArray46 
QShaderDescription::Sampler3DArray47 
QShaderDescription::SamplerCubeArray48 
QShaderDescription::SamplerRect49 
QShaderDescription::SamplerBuffer50 
QShaderDescription::SamplerExternalOES51 
QShaderDescription::Sampler52Für separate Probenehmer.
QShaderDescription::Image1D53 
QShaderDescription::Image2D54 
QShaderDescription::Image2DMS55 
QShaderDescription::Image3D56 
QShaderDescription::ImageCube57 
QShaderDescription::Image1DArray58 
QShaderDescription::Image2DArray59 
QShaderDescription::Image2DMSArray60 
QShaderDescription::Image3DArray61 
QShaderDescription::ImageCubeArray62 
QShaderDescription::ImageRect63 
QShaderDescription::ImageBuffer64 
QShaderDescription::Struct65 
QShaderDescription::Half66 
QShaderDescription::Half267 
QShaderDescription::Half368 
QShaderDescription::Half469 

Dokumentation zu Member-Funktionen

QShaderDescription::QShaderDescription()

Erstellt eine neue, leere `QShaderDescription`.

Hinweis: Dadas Objekt leerist , gibt die Methode „ isValid()“ für die neu erstellte Instanz den Wert „ false “ zurück.

QShaderDescription::QShaderDescription(const QShaderDescription &other)

Erstellt eine Kopie von „ other “.

[noexcept] QShaderDescription::~QShaderDescription()

Destruktor.

QList<QShaderDescription::InOutVariable> QShaderDescription::combinedImageSamplers() const

Gibt die Liste der kombinierten Bild-Sampler zurück

Bei GLSL-/Vulkan-Shadern als Quelle erzeugt ein Uniform vom Typ „ layout(binding = 1) uniform sampler2D tex; “ Folgendes: (hier als JSON-Text dargestellt)

"combinedImageSamplers": [
     {
         "binding": 1,
         "name": "tex",
         "set": 0,
         "type": "sampler2D"
     }
 ]

Dies bedeutet nicht, dass auch andere Sprachversionen des Shaders einen kombinierten Bild-Sampler verwenden müssen, zumal dieses Konzept möglicherweise nicht überall existiert. Eine HLSL-Version würde beispielsweise wahrscheinlich lediglich ein `Texture2D`- und ein `SamplerState`-Objekt mit den Registern `t1` bzw. `s1` verwenden.

std::array<uint, 3> QShaderDescription::computeShaderLocalSize() const

Gibt die lokale Größe eines Compute-Shaders zurück.

Beispielsweise gibt die Funktion für einen Compute-Shader mit der folgenden Deklaration den Wert { 256, 16, 1} zurück.

layout(local_size_x = 256, local_size_y = 16, local_size_z = 1) in;

[static] QShaderDescription QShaderDescription::deserialize(QDataStream *stream, int version)

Gibt ein neues „ QShaderDescription “ zurück, das von stream geladen wurde. „ version “ gibt die QSB-Version an.

Siehe auch serialize().

QList<QShaderDescription::BuiltinVariable> QShaderDescription::inputBuiltinVariables() const

Gibt die Liste der aktiven Builtins zurück, die als Eingabe verwendet werden. Beispielsweise werden bei einem Shader zur Tessellationsauswertung, der die Werte von `gl_TessCoord` und `gl_Position` ausliest, hier ` TessCoordBuiltin ` und ` PositionBuiltin ` aufgeführt.

QList<QShaderDescription::InOutVariable> QShaderDescription::inputVariables() const

Gibt die Liste der Eingabevariablen zurück. Dazu gehören Vertex-Eingaben (manchmal auch als „Attribute“ bezeichnet) für die Vertex-Stufe sowie Eingaben für andere Stufen (manchmal auch als „Varyings“ bezeichnet).

bool QShaderDescription::isValid() const

Gibt „true“ zurück, wenn die „ QShaderDescription “ mindestens einen Eintrag in einer der Variablen- oder Blocklisten enthält.

QList<QShaderDescription::BuiltinVariable> QShaderDescription::outputBuiltinVariables() const

Gibt die Liste der aktiven integrierten Variablen zurück, die als Eingabe verwendet werden. Beispielsweise verfügt ein Vertex-Shader sehr häufig über „ PositionBuiltin “ als integrierte Ausgabevariable.

QList<QShaderDescription::InOutVariable> QShaderDescription::outputVariables() const

Gibt die Liste der Ausgabevariablen zurück.

QList<QShaderDescription::PushConstantBlock> QShaderDescription::pushConstantBlocks() const

Gibt die Liste der Push-Konstantenblöcke zurück.

Hinweis: Vermeiden Sie die Verwendung von Push-Konstantenblöcken für Shader, die in Kombination mit der Qt-Rendering-Hardware-Schnittstelle verwendet werden sollen, da diese derzeit keine Unterstützung dafür bietet.

void QShaderDescription::serialize(QDataStream *stream, int version) const

Serialisiert „ QShaderDescription “ in „ stream “. „ version “ gibt die QSB-Version an.

Siehe auch deserialize() und toJson().

QList<QShaderDescription::StorageBlock> QShaderDescription::storageBlocks() const

Gibt die Liste der Shader-Speicherblöcke zurück.

Beispiel: Bei GLSL-/Vulkan-Shadern als Quelle erzeugt die Deklaration

struct Stuff {
    vec2 a;
    vec2 b;
};
layout(std140, binding = 0) buffer StuffSsbo {
    vec4 whatever;
    Stuff stuff[];
} buf;

Folgendes: (hier als textuelles JSON dargestellt)

"storageBlocks": [ {
    "binding": 0,
    "blockName": "StuffSsbo",
    "instanceName": "buf",
    "knownSize": 16,
    "runtimeArrayStride": 16
    "members": [
        {
            "name": "whatever",
            "offset": 0,
            "size": 16,
            "type": "vec4"
        },
        {
            "arrayDims": [
                0
            ],
            "name": "stuff",
            "offset": 16,
            "size": 0,
            "structMembers": [
                {
                    "name": "a",
                    "offset": 0,
                    "size": 8,
                    "type": "vec2"
                },
                {
                    "name": "b",
                    "offset": 8,
                    "size": 8,
                    "type": "vec2"
                }
            ],
            "type": "struct"
        }
    ],
    "set": 0
} ]

Hinweis: Die Größe des letzten Elements im Speicherblock ist undefiniert. Dies zeigt sich als „ size “ 0 und einer Array-Dimension von „ [0] “. Die Speicherblock- knownSize schließt die Größe des letzten Elements aus, da diese erst zur Laufzeit bekannt ist. Der Abstand in Bytes zwischen den Array-Elementen für ein letztes Element mit undefinierter Array-Größe beträgt runtimeArrayStride. Dieser Wert wird gemäß den Regeln des festgelegten Standards für das Pufferspeicherlayout (std140, std430) bestimmt.

Hinweis: SSBOs sind bei einigen Grafik-APIs nicht verfügbar, beispielsweise bei OpenGL 2.x oder OpenGL ES vor Version 3.1.

QList<QShaderDescription::InOutVariable> QShaderDescription::storageImages() const

Gibt die Liste der Bildvariablen zurück.

Diese kommen wahrscheinlich in Compute-Shadern vor. Beispielsweise erzeugt layout (binding = 0, rgba8) uniform readonly image2D inputImage; Folgendes: (hier als JSON-Text dargestellt)

"storageImages": [
     {
         "binding": 0,
         "imageFormat": "rgba8",
         "name": "inputImage",
         "set": 0,
         "type": "image2D"
     }
 ]

Hinweis: Separate Bildobjekte sind mit einigen Grafik-APIs nicht kompatibel, beispielsweise mit OpenGL 2.x oder OpenGL ES vor Version 3.1.

QShaderDescription::TessellationMode QShaderDescription::tessellationMode() const

Gibt den Tessellationsausführungsmodus für einen Tessellationssteuerungs- oder Auswertungs-Shader zurück.

Ist dieser nicht festgelegt, lautet der Rückgabewert „ UnknownTessellationMode “.

Beispielsweise gibt die Funktion für einen Tessellationsauswertungs-Shader mit der folgenden Deklaration „ TrianglesTessellationMode “ zurück.

layout(triangles) in;

uint QShaderDescription::tessellationOutputVertexCount() const

Gibt die Anzahl der Ausgangs-Eckpunkte zurück.

Beispielsweise gibt die Funktion bei einem Tessellations-Control-Shader mit der folgenden Deklaration den Wert 3 zurück.

layout(vertices = 3) out;

QShaderDescription::TessellationPartitioning QShaderDescription::tessellationPartitioning() const

Gibt den Tessellations-Partitionierungsmodus für einen Tessellations-Steuer- oder Auswertungs-Shader zurück.

Ist dieser nicht festgelegt, lautet der Rückgabewert „ UnknownTessellationPartitioning “.

Beispielsweise gibt die Funktion für einen Tessellationsauswertungs-Shader mit der folgenden Deklaration „ FractionalOddTessellationPartitioning “ zurück.

layout(triangles, fractional_odd_spacing, ccw) in;

QShaderDescription::TessellationWindingOrder QShaderDescription::tessellationWindingOrder() const

Gibt die Tessellations-Winding-Reihenfolge für einen Tessellations-Steuer- oder Auswertungs-Shader zurück.

Ist dieser Parameter nicht festgelegt, lautet der Rückgabewert „ UnknownTessellationWindingOrder “.

Beispielsweise gibt die Funktion für einen Tessellationsauswertungs-Shader mit der folgenden Deklaration „ CcwTessellationWindingOrder “ zurück.

layout(triangles, fractional_odd_spacing, ccw) in;

QByteArray QShaderDescription::toJson() const

Gibt eine serialisierte JSON-Textversion der Daten zurück.

Hinweis: Für JSON-Textsteht keine Deserialisierungsmethode zur Verfügung.

Siehe auch ` serialize()`.

QList<QShaderDescription::UniformBlock> QShaderDescription::uniformBlocks() const

Gibt die Liste der einheitlichen Blöcke zurück.

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

Weist diesem Objekt „ other “ zu.

Zugehörige Nicht-Mitglieder

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

Gibt „ true “ zurück, wenn die beiden Objekte vom Typ „ QShaderDescription “ lhs und rhs gleich 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.