QShaderDescription Class
Beschreibt die Schnittstelle eines Shaders. Mehr...
Kopfzeile: | #include <QShaderDescription> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
Since: | Qt 6.6 |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QShaderDescription ist Teil von Rendering in 3D.
Ö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, …, InstanceIndexBuiltin } |
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) |
Verwandte Nicht-Mitglieder
bool | operator==(const QShaderDescription &lhs, const QShaderDescription &rhs) |
Detaillierte Beschreibung
Warnung: Die QRhi Familie von Klassen im Qt Gui Modul, einschließlich QShader und QShaderDescription, bieten begrenzte Kompatibilitätsgarantien. Es gibt keine Quell- oder Binärkompatibilitätsgarantien für diese Klassen, was bedeutet, dass die API nur mit der Qt-Version funktioniert, mit der die Anwendung entwickelt wurde. Quellcode-inkompatible Änderungen sollen jedoch so gering wie möglich gehalten werden und werden nur in kleineren Versionen (6.7, 6.8, usw.) vorgenommen. Um diese Klassen in einer Anwendung zu verwenden, verlinken Sie zu Qt::GuiPrivate
(wenn Sie CMake verwenden) und fügen Sie die Header mit dem Präfix rhi
ein, zum Beispiel #include <rhi/qshaderdescription.h>
.
Ein Shader hat normalerweise eine Reihe von Eingängen und Ausgängen. Ein Vertex-Shader hat zum Beispiel eine Reihe von Eingabevariablen und kann einen oder mehrere einheitliche Puffer verwenden, um auf Daten zuzugreifen (z. B. eine Modelview-Matrix), die von der Anwendung bereitgestellt werden. Der Shader für die Fragment-Stufe erhält Daten von der Vertex-Stufe (in einem einfachen Setup) und kann auch auf Daten aus Uniform Buffern, Bildern und Samplern zurückgreifen.
Was die Scheitelpunkt-Eingaben und das Layout der einheitlichen Puffer betrifft (wie lauten die Namen der Elemente, wie groß sind sie, wie groß ist ihr Offset usw.), so müssen Anwendungen und Frameworks dies möglicherweise dynamisch zur Laufzeit ermitteln. Dies ist typisch, wenn der Shader nicht eingebaut ist, sondern von einer externen Instanz, wie dem Benutzer, bereitgestellt wird.
Moderne und schlanke Grafik-APIs bieten möglicherweise keine Möglichkeit mehr, Shader-Reflection-Informationen zur Laufzeit abzufragen. Daher werden solche Daten nun automatisch von QShaderBaker generiert und als QShaderDescription-Objekt für jeden QShader bereitgestellt.
Beispiel
Nehmen 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 einem Typ von vec4
und color
an Position 1 mit einem Typ von vec3
. Er hat eine Ausgabe: v_color
Er hat einen Ausgang, der aber für Anwendungen normalerweise nicht interessant ist. Wichtiger ist, dass es einen einheitlichen Block an der Bindung 0 mit einer Größe von 68 Byte und zwei Mitgliedern gibt, eine 4x4-Matrix mit dem Namen mvp
an Offset 0 und einen Float opacity
an Offset 64.
All dies wird durch ein QShaderDescription-Objekt beschrieben. QShaderDescription kann über QDataStream in JSON und in ein Binärformat serialisiert und aus diesem Binärformat deserialisiert werden. In der Praxis wird dies nur selten benötigt, da QShader sich automatisch um die zugehörige QShaderDescription kümmert, aber wenn die QShaderDescription des obigen Shaders als JSON ausgegeben würde (wie es die Option -d
des Tools qsb
tut), würde sie wie folgt aussehen:
{ "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 obige. Der Einfachheit halber enthalten die inneren Strukturen nur öffentliche Datenelemente, auch in Anbetracht der Tatsache, dass sich ihr Layout in Zukunft wahrscheinlich nicht ändern wird.
Siehe auch QShaderBaker und QShader.
Dokumentation der Mitgliedstypen
enum QShaderDescription::BuiltinType
Eingebauter Variablentyp.
Konstante | Wert |
---|---|
QShaderDescription::PositionBuiltin | 0 |
QShaderDescription::PointSizeBuiltin | 1 |
QShaderDescription::ClipDistanceBuiltin | 3 |
QShaderDescription::CullDistanceBuiltin | 4 |
QShaderDescription::VertexIdBuiltin | 5 |
QShaderDescription::InstanceIdBuiltin | 6 |
QShaderDescription::PrimitiveIdBuiltin | 7 |
QShaderDescription::InvocationIdBuiltin | 8 |
QShaderDescription::LayerBuiltin | 9 |
QShaderDescription::ViewportIndexBuiltin | 10 |
QShaderDescription::TessLevelOuterBuiltin | 11 |
QShaderDescription::TessLevelInnerBuiltin | 12 |
QShaderDescription::TessCoordBuiltin | 13 |
QShaderDescription::PatchVerticesBuiltin | 14 |
QShaderDescription::FragCoordBuiltin | 15 |
QShaderDescription::PointCoordBuiltin | 16 |
QShaderDescription::FrontFacingBuiltin | 17 |
QShaderDescription::SampleIdBuiltin | 18 |
QShaderDescription::SamplePositionBuiltin | 19 |
QShaderDescription::SampleMaskBuiltin | 20 |
QShaderDescription::FragDepthBuiltin | 22 |
QShaderDescription::NumWorkGroupsBuiltin | 24 |
QShaderDescription::WorkgroupSizeBuiltin | 25 |
QShaderDescription::WorkgroupIdBuiltin | 26 |
QShaderDescription::LocalInvocationIdBuiltin | 27 |
QShaderDescription::GlobalInvocationIdBuiltin | 28 |
QShaderDescription::LocalInvocationIndexBuiltin | 29 |
QShaderDescription::VertexIndexBuiltin | 42 |
QShaderDescription::InstanceIndexBuiltin | 43 |
enum QShaderDescription::ImageFlag
flags QShaderDescription::ImageFlags
Bild-Flags.
Konstante | Wert |
---|---|
QShaderDescription::ReadOnlyImage | 1 << 0 |
QShaderDescription::WriteOnlyImage | 1 << 1 |
Der Typ ImageFlags ist ein Typedef für QFlags<ImageFlag>. Er speichert eine ODER-Kombination von ImageFlag-Werten.
enum QShaderDescription::ImageFormat
Bildformat.
Konstante | Wert |
---|---|
QShaderDescription::ImageFormatUnknown | 0 |
QShaderDescription::ImageFormatRgba32f | 1 |
QShaderDescription::ImageFormatRgba16f | 2 |
QShaderDescription::ImageFormatR32f | 3 |
QShaderDescription::ImageFormatRgba8 | 4 |
QShaderDescription::ImageFormatRgba8Snorm | 5 |
QShaderDescription::ImageFormatRg32f | 6 |
QShaderDescription::ImageFormatRg16f | 7 |
QShaderDescription::ImageFormatR11fG11fB10f | 8 |
QShaderDescription::ImageFormatR16f | 9 |
QShaderDescription::ImageFormatRgba16 | 10 |
QShaderDescription::ImageFormatRgb10A2 | 11 |
QShaderDescription::ImageFormatRg16 | 12 |
QShaderDescription::ImageFormatRg8 | 13 |
QShaderDescription::ImageFormatR16 | 14 |
QShaderDescription::ImageFormatR8 | 15 |
QShaderDescription::ImageFormatRgba16Snorm | 16 |
QShaderDescription::ImageFormatRg16Snorm | 17 |
QShaderDescription::ImageFormatRg8Snorm | 18 |
QShaderDescription::ImageFormatR16Snorm | 19 |
QShaderDescription::ImageFormatR8Snorm | 20 |
QShaderDescription::ImageFormatRgba32i | 21 |
QShaderDescription::ImageFormatRgba16i | 22 |
QShaderDescription::ImageFormatRgba8i | 23 |
QShaderDescription::ImageFormatR32i | 24 |
QShaderDescription::ImageFormatRg32i | 25 |
QShaderDescription::ImageFormatRg16i | 26 |
QShaderDescription::ImageFormatRg8i | 27 |
QShaderDescription::ImageFormatR16i | 28 |
QShaderDescription::ImageFormatR8i | 29 |
QShaderDescription::ImageFormatRgba32ui | 30 |
QShaderDescription::ImageFormatRgba16ui | 31 |
QShaderDescription::ImageFormatRgba8ui | 32 |
QShaderDescription::ImageFormatR32ui | 33 |
QShaderDescription::ImageFormatRgb10a2ui | 34 |
QShaderDescription::ImageFormatRg32ui | 35 |
QShaderDescription::ImageFormatRg16ui | 36 |
QShaderDescription::ImageFormatRg8ui | 37 |
QShaderDescription::ImageFormatR16ui | 38 |
QShaderDescription::ImageFormatR8ui | 39 |
enum QShaderDescription::QualifierFlag
flags QShaderDescription::QualifierFlags
Qualifier-Flags.
Konstante | Wert |
---|---|
QShaderDescription::QualifierReadOnly | 1 << 0 |
QShaderDescription::QualifierWriteOnly | 1 << 1 |
QShaderDescription::QualifierCoherent | 1 << 2 |
QShaderDescription::QualifierVolatile | 1 << 3 |
QShaderDescription::QualifierRestrict | 1 << 4 |
Der Typ QualifierFlags ist ein Typedef für QFlags<QualifierFlag>. Er speichert eine ODER-Kombination von QualifierFlag-Werten.
enum QShaderDescription::TessellationMode
Konstante | Wert |
---|---|
QShaderDescription::UnknownTessellationMode | 0 |
QShaderDescription::TrianglesTessellationMode | 1 |
QShaderDescription::QuadTessellationMode | 2 |
QShaderDescription::IsolineTessellationMode | 3 |
enum QShaderDescription::TessellationPartitioning
Konstante | Wert |
---|---|
QShaderDescription::UnknownTessellationPartitioning | 0 |
QShaderDescription::EqualTessellationPartitioning | 1 |
QShaderDescription::FractionalEvenTessellationPartitioning | 2 |
QShaderDescription::FractionalOddTessellationPartitioning | 3 |
enum QShaderDescription::TessellationWindingOrder
Konstante | Wert |
---|---|
QShaderDescription::UnknownTessellationWindingOrder | 0 |
QShaderDescription::CwTessellationWindingOrder | 1 |
QShaderDescription::CcwTessellationWindingOrder | 2 |
enum QShaderDescription::VariableType
Stellt den Typ einer Variablen oder eines Blockelements dar.
Konstante | Wert | Beschreibung |
---|---|---|
QShaderDescription::Unknown | 0 | |
QShaderDescription::Float | 1 | |
QShaderDescription::Vec2 | 2 | |
QShaderDescription::Vec3 | 3 | |
QShaderDescription::Vec4 | 4 | |
QShaderDescription::Mat2 | 5 | |
QShaderDescription::Mat2x3 | 6 | |
QShaderDescription::Mat2x4 | 7 | |
QShaderDescription::Mat3 | 8 | |
QShaderDescription::Mat3x2 | 9 | |
QShaderDescription::Mat3x4 | 10 | |
QShaderDescription::Mat4 | 11 | |
QShaderDescription::Mat4x2 | 12 | |
QShaderDescription::Mat4x3 | 13 | |
QShaderDescription::Int | 14 | |
QShaderDescription::Int2 | 15 | |
QShaderDescription::Int3 | 16 | |
QShaderDescription::Int4 | 17 | |
QShaderDescription::Uint | 18 | |
QShaderDescription::Uint2 | 19 | |
QShaderDescription::Uint3 | 20 | |
QShaderDescription::Uint4 | 21 | |
QShaderDescription::Bool | 22 | |
QShaderDescription::Bool2 | 23 | |
QShaderDescription::Bool3 | 24 | |
QShaderDescription::Bool4 | 25 | |
QShaderDescription::Double | 26 | |
QShaderDescription::Double2 | 27 | |
QShaderDescription::Double3 | 28 | |
QShaderDescription::Double4 | 29 | |
QShaderDescription::DMat2 | 30 | |
QShaderDescription::DMat2x3 | 31 | |
QShaderDescription::DMat2x4 | 32 | |
QShaderDescription::DMat3 | 33 | |
QShaderDescription::DMat3x2 | 34 | |
QShaderDescription::DMat3x4 | 35 | |
QShaderDescription::DMat4 | 36 | |
QShaderDescription::DMat4x2 | 37 | |
QShaderDescription::DMat4x3 | 38 | |
QShaderDescription::Sampler1D | 39 | |
QShaderDescription::Sampler2D | 40 | |
QShaderDescription::Sampler2DMS | 41 | |
QShaderDescription::Sampler3D | 42 | |
QShaderDescription::SamplerCube | 43 | |
QShaderDescription::Sampler1DArray | 44 | |
QShaderDescription::Sampler2DArray | 45 | |
QShaderDescription::Sampler2DMSArray | 46 | |
QShaderDescription::Sampler3DArray | 47 | |
QShaderDescription::SamplerCubeArray | 48 | |
QShaderDescription::SamplerRect | 49 | |
QShaderDescription::SamplerBuffer | 50 | |
QShaderDescription::SamplerExternalOES | 51 | |
QShaderDescription::Sampler | 52 | Für separate Probenehmer. |
QShaderDescription::Image1D | 53 | |
QShaderDescription::Image2D | 54 | |
QShaderDescription::Image2DMS | 55 | |
QShaderDescription::Image3D | 56 | |
QShaderDescription::ImageCube | 57 | |
QShaderDescription::Image1DArray | 58 | |
QShaderDescription::Image2DArray | 59 | |
QShaderDescription::Image2DMSArray | 60 | |
QShaderDescription::Image3DArray | 61 | |
QShaderDescription::ImageCubeArray | 62 | |
QShaderDescription::ImageRect | 63 | |
QShaderDescription::ImageBuffer | 64 | |
QShaderDescription::Struct | 65 | |
QShaderDescription::Half | 66 | |
QShaderDescription::Half2 | 67 | |
QShaderDescription::Half3 | 68 | |
QShaderDescription::Half4 | 69 |
Dokumentation der Mitgliedsfunktionen
QShaderDescription::QShaderDescription()
Konstruiert eine neue, leere QShaderDescription.
Hinweis: Leer zu sein bedeutet, dass isValid() false
für die neu konstruierte Instanz zurückgibt.
QShaderDescription::QShaderDescription(const QShaderDescription &other)
Konstruiert eine Kopie von other.
[noexcept]
QShaderDescription::~QShaderDescription()
Zerstörer.
QList<QShaderDescription::InOutVariable> QShaderDescription::combinedImageSamplers() const
Gibt die Liste der kombinierten Bild-Sampler zurück
Mit GLSL/Vulkan-Shadern als Quelle erzeugt ein layout(binding = 1) uniform sampler2D tex;
uniform folgendes: (hier als textuelles JSON dargestellt)
"combinedImageSamplers": [ { "binding": 1, "name": "tex", "set": 0, "type": "sampler2D" } ]
Dies bedeutet nicht, dass andere Sprachversionen des Shaders auch einen kombinierten Bild-Sampler verwenden müssen, insbesondere wenn man bedenkt, dass das Konzept nicht überall existiert. Zum Beispiel wird eine HLSL-Version wahrscheinlich nur ein Texture2D- und 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.
Für einen Compute-Shader mit der folgenden Deklaration gibt die Funktion zum Beispiel { 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 Buildins zurück, die als Eingabe verwendet werden. Bei einem Tessellierungsbewertungs-Shader, der den Wert von gl_TessCoord und gl_Position liest, werden hier beispielsweise TessCoordBuiltin und PositionBuiltin aufgeführt.
QList<QShaderDescription::InOutVariable> QShaderDescription::inputVariables() const
Gibt die Liste der Eingabevariablen zurück. Dazu gehören Scheitelpunkt-Eingaben (manchmal Attribute genannt) für die Scheitelpunkt-Stufe und Eingaben für andere Stufen (manchmal Variationen genannt).
bool QShaderDescription::isValid() const
Gibt true zurück, wenn QShaderDescription mindestens einen Eintrag in einer der Variablen- und Blocklisten enthält.
QList<QShaderDescription::BuiltinVariable> QShaderDescription::outputBuiltinVariables() const
Gibt die Liste der aktiven eingebauten Variablen zurück, die als Eingabe verwendet werden. Ein Vertex-Shader hat z. B. sehr oft 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 es, sich auf Push-Konstantenblöcke für Shader zu verlassen, die in Kombination mit dem Qt Rendering Hardware Interface verwendet werden sollen, da dieses derzeit keine Unterstützung für sie bietet.
void QShaderDescription::serialize(QDataStream *stream, int version) const
Serialisiert dieses QShaderDescription zu 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.
Zum Beispiel, mit 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;
das Folgende erzeugt: (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 wird als size
0 und eine Array-Dimension von [0]
angezeigt. knownSize
des Speicherblocks schließt die Größe des letzten Elements aus, da diese erst zur Laufzeit bekannt ist. Der Abstand in Bytes zwischen den Arrayelementen für ein letztes Element mit undefinierter Array-Größe ist runtimeArrayStride
. Dieser Wert wird nach den Regeln des spezifizierten Pufferspeicher-Layout-Standards (std140, std430) bestimmt.
Hinweis: SSBOs sind bei einigen Grafik-APIs nicht verfügbar, z. B. bei OpenGL 2.x oder OpenGL ES älter als 3.1.
QList<QShaderDescription::InOutVariable> QShaderDescription::storageImages() const
Gibt die Liste der Bildvariablen zurück.
Diese werden wahrscheinlich in Compute-Shadern vorkommen. Zum Beispiel erzeugt layout (binding = 0, rgba8) uniform readonly image2D inputImage;
das Folgende: (hier als textuelles JSON dargestellt)
"storageImages": [ { "binding": 0, "imageFormat": "rgba8", "name": "inputImage", "set": 0, "type": "image2D" } ]
Hinweis: Separate Bildobjekte sind nicht mit einigen Grafik-APIs kompatibel, wie z. B. OpenGL 2.x oder OpenGL ES älter als 3.1.
QShaderDescription::TessellationMode QShaderDescription::tessellationMode() const
Gibt den Tesselation-Ausführungsmodus für ein Tesselation-Steuerelement oder einen Evaluierungs-Shader zurück.
Wenn er nicht festgelegt ist, lautet der Rückgabewert UnknownTessellationMode.
Für einen Tessellierungs-Evaluierungs-Shader mit der folgenden Deklaration gibt die Funktion beispielsweise TrianglesTessellationMode zurück.
layout(triangles) in;
uint QShaderDescription::tessellationOutputVertexCount() const
Gibt die Anzahl der ausgegebenen Scheitelpunkte zurück.
Für einen Tessellation Control Shader mit der folgenden Deklaration gibt die Funktion zum Beispiel 3 zurück.
layout(vertices = 3) out;
QShaderDescription::TessellationPartitioning QShaderDescription::tessellationPartitioning() const
Gibt den Tessellierungs-Partitionierungsmodus für ein Tessellierungs-Steuerelement oder einen Evaluierungs-Shader zurück.
Wenn er nicht festgelegt ist, lautet der Rückgabewert UnknownTessellationPartitioning.
Für einen Tessellierungs-Evaluierungs-Shader mit der folgenden Deklaration gibt die Funktion beispielsweise FractionalOddTessellationPartitioning zurück.
layout(triangles, fractional_odd_spacing, ccw) in;
QShaderDescription::TessellationWindingOrder QShaderDescription::tessellationWindingOrder() const
Gibt die Reihenfolge der Tessellierung für ein Tessellierungs-Steuerelement oder einen Evaluierungs-Shader zurück.
Wenn nicht festgelegt, ist der zurückgegebene Wert UnknownTessellationWindingOrder.
Für einen Tessellierungs-Evaluierungs-Shader mit der folgenden Deklaration gibt die Funktion zum Beispiel 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-Text gibt es keine Deserialisierungsmethode.
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.
Verwandte Nicht-Mitglieder
[noexcept]
bool operator==(const QShaderDescription &lhs, const QShaderDescription &rhs)
Gibt true
zurück, wenn die beiden Objekte QShaderDescription 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.