QRhiTextureSubresourceUploadDescription Class
Beschreibt die Quelle für eine Mip-Ebene in einer Ebene bei einem Textur-Upload-Vorgang. Mehr...
Kopfzeile: | #include <rhi/qrhi.h> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
qmake: | QT += gui-private |
Since: | Qt 6.6 |
Öffentliche Funktionen
QRhiTextureSubresourceUploadDescription() | |
QRhiTextureSubresourceUploadDescription(const QByteArray &data) | |
QRhiTextureSubresourceUploadDescription(const QImage &image) | |
QRhiTextureSubresourceUploadDescription(const void *data, quint32 size) | |
QByteArray | data() const |
quint32 | dataStride() const |
QPoint | destinationTopLeft() const |
QImage | image() const |
void | setData(const QByteArray &data) |
void | setDataStride(quint32 stride) |
void | setDestinationTopLeft(const QPoint &p) |
void | setImage(const QImage &image) |
void | setSourceSize(const QSize &size) |
void | setSourceTopLeft(const QPoint &p) |
QSize | sourceSize() const |
QPoint | sourceTopLeft() const |
Detaillierte Beschreibung
Der Quellinhalt wird entweder als QImage oder als roher Blob angegeben. Ersteres ist nur für unkomprimierte Texturen mit einem Format erlaubt, das auf QImage abgebildet werden kann, während letzteres für alle Formate, einschließlich Fließkomma und komprimiert, unterstützt wird.
destinationTopLeft() gibt die linke obere Ecke des Zielrechtecks an. Der Standardwert ist (0, 0).
Ein leeres sourceSize() (die Vorgabe) zeigt an, dass die Größe als die Größe der Subresource angenommen wird. Bei QImage-basierten Uploads bedeutet dies, dass die Größe der Quelle image() der Größe der Subressource entsprechen muss. Wenn stattdessen Rohdaten bereitgestellt werden, muss eine ausreichende Anzahl von Bytes in data() angegeben werden.
sourceTopLeft() wird nur für QImage-basierte Uploads unterstützt und gibt die linke obere Ecke des Quellrechtecks an.
Hinweis: Das Setzen von sourceSize() oder sourceTopLeft() kann je nach Format und Backend intern eine Kopie von QImage auslösen.
Wenn Rohdaten bereitgestellt werden und die Schrittweite nicht über setDataStride() angegeben wird, muss die Schrittweite (Zeilenabstand, Zeilenlänge in Bytes) der bereitgestellten Daten gleich width * pixelSize
sein, wobei pixelSize
die Anzahl der für ein Pixel verwendeten Bytes ist, und es darf kein zusätzliches Padding zwischen den Zeilen vorhanden sein. Es gibt keine Anforderung für die Ausrichtung am Zeilenanfang.
Wenn in den eingegebenen Rohdaten am Ende jeder Zeile ungenutzte Daten vorhanden sind, rufen Sie setDataStride() mit der Gesamtzahl der Bytes pro Zeile auf. Der Zeilenabstand muss immer ein Vielfaches der Anzahl der Bytes für ein Pixel sein. Der Zeilenabstand gilt nur für Bilddaten für Texturen mit einem unkomprimierten Format.
Hinweis: Das Format der Quelldaten muss mit dem Texturformat kompatibel sein. Bei vielen Grafik-APIs werden die Daten so wie sie sind in einen Staging-Buffer kopiert, es findet keine Zwischenformatkonvertierung durch QRhi statt. Dies gilt auch für Fließkommaformate, wobei z. B. RGBA16F halbe Fließkommazahlen in den Quelldaten erfordert.
Hinweis: Das Setzen des Stride über setDataStride() funktioniert nur, wenn QRhi::ImageDataStride als supported gemeldet wird. In der Praxis kann erwartet werden, dass dies überall unterstützt wird, außer bei OpenGL ES 2.0.
Hinweis: Wenn eine QImage angegeben wird, wird der von QImage::bytesPerLine() zurückgegebene Stride automatisch berücksichtigt.
Warnung: Wenn ein QImage angegeben wird und QImage nicht die zugrundeliegenden Pixeldaten besitzt, liegt es am Aufrufer sicherzustellen, dass die zugehörigen Daten bis zum Ende des Frames gültig bleiben. (Es reicht nicht aus, nur den Stapel der Ressourcenaktualisierung zu übermitteln, die Daten müssen bis zum Aufruf von QRhi::endFrame() gültig bleiben, um über alle Backends hinweg portabel zu sein). Wenn dies nicht sichergestellt werden kann, wird dem Aufrufer dringend empfohlen, QImage::detach() für das Bild aufzurufen, bevor es an uploadTexture() übergeben wird.
Hinweis: Dies ist eine RHI-API mit begrenzten Kompatibilitätsgarantien, siehe QRhi für Details.
Siehe auch QRhiTextureUploadDescription.
Dokumentation der Mitgliedsfunktionen
[noexcept]
QRhiTextureSubresourceUploadDescription::QRhiTextureSubresourceUploadDescription()
Konstruiert eine leere Subresource-Beschreibung.
Hinweis: Eine leere QRhiTextureSubresourceUploadDescription ist für sich genommen nicht brauchbar und sollte nicht an QRhiTextureUploadEntry übergeben werden. Es müssen mindestens Bild oder Daten eingestellt werden.
[explicit]
QRhiTextureSubresourceUploadDescription::QRhiTextureSubresourceUploadDescription(const QByteArray &data)
Konstruiert eine Mip-Level-Beschreibung mit den durch data angegebenen Bilddaten. Dies ist auch für Fließkomma- und komprimierte Formate geeignet.
[explicit]
QRhiTextureSubresourceUploadDescription::QRhiTextureSubresourceUploadDescription(const QImage &image)
Konstruiert eine mip-Level-Beschreibung mit einem image.
Die size von image muss mit der Größe der mip-Ebene übereinstimmen. Für die Ebene 0 ist das die texture size.
Die Bittiefe von image muss mit texture format kompatibel sein.
Um einen teilweisen Upload zu beschreiben, rufen Sie anschließend setSourceSize(), setSourceTopLeft() oder setDestinationTopLeft() auf.
QRhiTextureSubresourceUploadDescription::QRhiTextureSubresourceUploadDescription(const void *data, quint32 size)
Konstruiert eine Mip-Level-Beschreibung, wobei die Bilddaten durch data und size angegeben werden. Dies ist auch für Fließkomma- und komprimierte Formate geeignet.
data kann sicher zerstört oder geändert werden, sobald diese Funktion zurückkehrt.
QByteArray QRhiTextureSubresourceUploadDescription::data() const
Gibt die aktuell eingestellten Rohpixeldaten zurück.
Siehe auch setData().
quint32 QRhiTextureSubresourceUploadDescription::dataStride() const
Gibt den aktuell eingestellten Datenstride zurück.
Siehe auch setDataStride().
QPoint QRhiTextureSubresourceUploadDescription::destinationTopLeft() const
Gibt die aktuell eingestellte obere linke Position des Ziels zurück. Standardwert ist (0, 0).
Siehe auch setDestinationTopLeft().
QImage QRhiTextureSubresourceUploadDescription::image() const
Gibt die aktuell eingestellte QImage zurück.
Siehe auch setImage().
void QRhiTextureSubresourceUploadDescription::setData(const QByteArray &data)
Setzt data.
Siehe auch data().
void QRhiTextureSubresourceUploadDescription::setDataStride(quint32 stride)
Legt die Daten stride in Bytes fest. Standardmäßig ist dies 0 und nicht immer relevant. Wenn Rohdaten data() bereitgestellt werden und die Schrittweite nicht über setDataStride() angegeben wird, muss die Schrittweite (Zeilenabstand, Zeilenlänge in Bytes) der bereitgestellten Daten gleich width * pixelSize
sein, wobei pixelSize
die Anzahl der für ein Pixel verwendeten Bytes ist, und es darf kein zusätzliches Padding zwischen den Zeilen vorhanden sein. Andernfalls, wenn es zusätzlichen Platz zwischen den Zeilen gibt, setzen Sie einen Wert ungleich Null stride. All dies gilt nur, wenn Rohbilddaten bereitgestellt werden, und ist nicht notwendig, wenn mit QImage gearbeitet wird, da dies einen eigenen stride Wert hat.
Hinweis: Das Setzen des Abstands mittels setDataStride() funktioniert nur, wenn QRhi::ImageDataStride als supported gemeldet wird.
Hinweis: Wenn ein QImage angegeben wird, wird die von QImage::bytesPerLine() zurückgegebene Schrittweite automatisch berücksichtigt, so dass es nicht erforderlich ist, die Datenschrittweite manuell einzustellen.
Siehe auch dataStride().
void QRhiTextureSubresourceUploadDescription::setDestinationTopLeft(const QPoint &p)
Legt die obere linke Position des Ziels p fest.
Siehe auch destinationTopLeft().
void QRhiTextureSubresourceUploadDescription::setImage(const QImage &image)
Legt image fest. Beim Laden von Texturen werden die Bilddaten so gelesen, wie sie sind, ohne Formatkonvertierung.
Siehe auch image().
void QRhiTextureSubresourceUploadDescription::setSourceSize(const QSize &size)
Setzt die Quelle size in Pixel.
Hinweis: Das Setzen von sourceSize() oder sourceTopLeft() kann intern eine Kopie von QImage auslösen, abhängig vom Format und dem Backend.
Siehe auch sourceSize().
void QRhiTextureSubresourceUploadDescription::setSourceTopLeft(const QPoint &p)
Setzt die Position der Quelle oben links p.
Hinweis: Das Setzen von sourceSize() oder sourceTopLeft() kann intern eine Kopie von QImage auslösen, abhängig vom Format und dem Backend.
Siehe auch sourceTopLeft().
QSize QRhiTextureSubresourceUploadDescription::sourceSize() const
Gibt die Größe der Quelle in Pixeln zurück. Der Standardwert ist eine standardmäßig konstruierte QSize, die die gesamte Subresource angibt.
Siehe auch setSourceSize().
QPoint QRhiTextureSubresourceUploadDescription::sourceTopLeft() const
Gibt die aktuell eingestellte obere linke Position der Quelle zurück. Standardwert ist (0, 0).
Siehe auch setSourceTopLeft().
© 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.