QRhiTextureUploadDescription Class
Beschreibt den Vorgang des Hochladens einer Textur. Mehr...
| Kopfzeile: | #include <rhi/qrhi.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS GuiPrivate) target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
| qmake: | QT += gui-private |
| Seit: | Qt 6.6 |
Öffentliche Funktionen
| QRhiTextureUploadDescription() | |
| QRhiTextureUploadDescription(const QRhiTextureUploadEntry &entry) | |
| QRhiTextureUploadDescription(std::initializer_list<QRhiTextureUploadEntry> list) | |
| const QRhiTextureUploadEntry * | cbeginEntries() const |
| const QRhiTextureUploadEntry * | cendEntries() const |
| const QRhiTextureUploadEntry * | entryAt(qsizetype index) const |
| qsizetype | entryCount() const |
| void | setEntries(std::initializer_list<QRhiTextureUploadEntry> list) |
| void | setEntries(InputIterator first, InputIterator last) |
Detaillierte Beschreibung
Wird mit „ QRhiResourceUpdateBatch::uploadTexture()“ verwendet. Diese Funktion verfügt über zwei Varianten: eine, die ein „ QImage “ akzeptiert, und eine, die ein „QRhiTextureUploadDescription“ akzeptiert. Die erstere ist eine Komfortversion, die intern ein „QRhiTextureUploadDescription“ mit einem einzelnen Bild erstellt, das auf Ebene 0 für Ebene 0 abzielt.
Ein Beispiel für den gängigen, einfachen Fall, bei dem der Inhalt eines ` QImage ` in ein ` QRhiTexture ` mit passender Pixelgröße hochgeladen werden soll:
QImage image(256, 256, QImage::Format_RGBA8888);
image.fill(Qt::green); // or could use a QPainter targeting image
QRhiTexture *texture = rhi->newTexture(QRhiTexture::RGBA8, QSize(256, 256));
texture->create();
QRhiResourceUpdateBatch *u = rhi->nextResourceUpdateBatch();
u->uploadTexture(texture, image);Wenn es sich um Cubemaps, vorgefertigte Mip-Bilder, komprimierte Texturen oder Teil-Uploads handelt, müssen Anwendungen stattdessen diese Klasse verwenden.
QRhiTextureUploadDescription ermöglicht zudem die Festlegung von gebündelten Uploads, die beispielsweise bei der Erstellung einer Atlas- oder Glyphen-Cache-Textur nützlich sind: Mehrere Teil-Uploads für dieselbe Subressource (d. h. dieselbe Ebene und denselben Level) werden unterstützt und können – je nach Backend und zugrunde liegender Grafik-API – effizienter sein, wenn sie in derselben `QRhiTextureUploadDescription` gebündelt werden, anstatt für jeden einzelnen den Befehl ` uploadTexture()` auszuführen.
Hinweis: Cubemaps verfügen über eine Ebene für jede der sechs Flächen in der Reihenfolge +X, -X, +Y, -Y, +Z, -Z.
Die Angabe der Flächen einer Cubemap könnte beispielsweise wie folgt aussehen:
QImage faces[6];
// ...
QVarLengthArray<QRhiTextureUploadEntry, 6> entries;
for (int i = 0; i < 6; ++i)
entries.append(QRhiTextureUploadEntry(i, 0, faces[i]));
QRhiTextureUploadDescription desc;
desc.setEntries(entries.cbegin(), entries.cend());
resourceUpdates->uploadTexture(texture, desc);Ein weiteres Beispiel, das Mip-Bilder für eine komprimierte Textur festlegt:
QList<QRhiTextureUploadEntry> entries;
const int mipCount = rhi->mipLevelsForSize(compressedTexture->pixelSize());
for (int level = 0; level < mipCount; ++level) {
const QByteArray compressedDataForLevel = ..
entries.append(QRhiTextureUploadEntry(0, level, compressedDataForLevel));
}
QRhiTextureUploadDescription desc;
desc.setEntries(entries.cbegin(), entries.cend());
resourceUpdates->uploadTexture(compressedTexture, desc);Bei Teil-Uploads, die auf dieselbe Subressource abzielen, wird empfohlen, diese nach Möglichkeit in einer einzigen Upload-Anfrage zu bündeln:
QRhiTextureSubresourceUploadDescription subresDesc(image);
subresDesc.setSourceSize(QSize(10, 10));
subResDesc.setDestinationTopLeft(QPoint(50, 40));
QRhiTextureUploadEntry entry(0, 0, subresDesc); // layer 0, level 0
QRhiTextureSubresourceUploadDescription subresDesc2(image);
subresDesc2.setSourceSize(QSize(30, 40));
subResDesc2.setDestinationTopLeft(QPoint(100, 200));
QRhiTextureUploadEntry entry2(0, 0, subresDesc2); // layer 0, level 0, i.e. same subresource
QRhiTextureUploadDescription desc({ entry, entry2});
resourceUpdates->uploadTexture(texture, desc);Hinweis: Hierbei handelt es sich um eine RHI-API mit eingeschränkten Kompatibilitätsgarantien; weitere Informationen finden Sie unter QRhi.
Siehe auch QRhiResourceUpdateBatch.
Dokumentation zu Mitgliedsfunktionen
[constexpr noexcept default] QRhiTextureUploadDescription::QRhiTextureUploadDescription()
Erstellt eine leere Beschreibung für das Hochladen einer Textur.
QRhiTextureUploadDescription::QRhiTextureUploadDescription(const QRhiTextureUploadEntry &entry)
Erstellt eine Beschreibung für das Hochladen einer Textur mit einem einzigen Subressourcen-Upload, der unter entry beschrieben ist.
QRhiTextureUploadDescription::QRhiTextureUploadDescription(std::initializer_list<QRhiTextureUploadEntry> list)
Erstellt eine Beschreibung für den Textur-Upload mit den angegebenen „ list “-Einträgen.
Hinweis: ` list ` kann auch mehrere ` QRhiTextureUploadEntry `-Elemente mit derselben Ebene und demselben Level enthalten. Dies ist sinnvoll, wenn es sich um Teil-Uploads handelt, d. h., wenn die Quellgröße oder das Bild in der Beschreibung der Unterressource kleiner ist als die Abmessungen der Unterressource. Dies kann effizienter sein als die Ausgabe separater `uploadTexture()`-Aufrufe.
const QRhiTextureUploadEntry *QRhiTextureUploadDescription::cbeginEntries() const
Gibt einen konstanten Iterator zurück, der auf das erste Element der Eintragsliste verweist.
const QRhiTextureUploadEntry *QRhiTextureUploadDescription::cendEntries() const
Gibt einen konstanten Iterator zurück, der direkt auf die Stelle nach dem letzten Element der Eintragsliste zeigt.
const QRhiTextureUploadEntry *QRhiTextureUploadDescription::entryAt(qsizetype index) const
Gibt den Eintrag unter index zurück.
qsizetype QRhiTextureUploadDescription::entryCount() const
Gibt die Anzahl der Einträge zurück.
void QRhiTextureUploadDescription::setEntries(std::initializer_list<QRhiTextureUploadEntry> list)
Legt die „ list “ der Einträge fest.
template <typename InputIterator> void QRhiTextureUploadDescription::setEntries(InputIterator first, InputIterator last)
Legt die Liste der Einträge mithilfe der Iteratoren first und last fest.
© 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.