QRhiTextureUploadDescription Class
テクスチャのアップロード操作について説明します。詳細...
ヘッダー | #include <rhi/qrhi.h> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
qmake: | QT += gui-private |
以来: | Qt 6.6 |
パブリック関数
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) |
詳しい説明
QRhiResourceUpdateBatch::uploadTexture() と共に使用されます。1つはQImage を受け取り、もう1つは QRhiTextureUploadDescription を受け取ります。前者は便宜的なバージョンで、内部的にはレイヤー0のレベル0をターゲットとする単一の画像でQRhiTextureUploadDescriptionを作成します。
例えば、QImage の内容を、ピクセルサイズが一致するQRhiTexture にアップロードしたいという、よくある単純なケースです:
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);
キューブマップ、事前に生成されたmip画像、圧縮されたテクスチャ、または部分的なアップロードが含まれる場合、アプリケーションは代わりにこのクラスを使用する必要があります。
QRhiTextureUploadDescriptionはまた、アトラスやグリフキャッシュテクスチャを生成する場合などに便利な、バッチアップロードを指定することもできます。同じサブリソース(同じレイヤーとレベルを意味します)に対する複数の部分的なアップロードがサポートされており、バックエンドや基礎となるグラフィックスAPIによっては、それらのそれぞれに対して個別のuploadTexture ()コマンドを発行するのとは対照的に、同じQRhiTextureUploadDescriptionにバッチ化すると、より効率的になります。
注: キューブマップは、+X、-X、+Y、-Y、+Z、-Zの順番で6つの面に1つのレイヤーを持ちます。
たとえば、キューブマップの面を指定すると次のようになります:
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);
圧縮テクスチャのmipイメージを指定する別の例:
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);
同じサブリソースを対象とする部分アップロードでは、可能な限り、それらを1つのアップロードリクエストにまとめることをお勧めします:
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);
注意: これは互換性保証に制限のある RHI API です。詳細はQRhi を参照してください。
QRhiResourceUpdateBatchも参照の こと。
メンバー関数ドキュメント
[constexpr noexcept]
QRhiTextureUploadDescription::QRhiTextureUploadDescription()
空のテクスチャアップロード記述を構築します。
QRhiTextureUploadDescription::QRhiTextureUploadDescription(const QRhiTextureUploadEntry &entry)
entry で記述された単一のサブリソースアップロードでテクスチャアップロード記述を構築します。
QRhiTextureUploadDescription::QRhiTextureUploadDescription(std::initializer_list<QRhiTextureUploadEntry> list)
指定されたlist エントリを持つテクスチャアップロード記述を構築します。
注: list は、同じレイヤーとレベルを持つ複数のQRhiTextureUploadEntry エレメントを含むこともできます。これは、これらのアップロードが部分的である場合、つまり、それらのサブリソースの記述が、サブリソースの寸法よりも小さいソースサイズまたは画像を持つ場合に意味を成し、別々の uploadTexture() を発行するよりも効率的である可能性があります。
const QRhiTextureUploadEntry *QRhiTextureUploadDescription::cbeginEntries() const
エントリーリストの最初の項目を指すイテレータを返します。
const QRhiTextureUploadEntry *QRhiTextureUploadDescription::cendEntries() const
エントリリストの最後の項目の直後を指すイテレータを返します。
const QRhiTextureUploadEntry *QRhiTextureUploadDescription::entryAt(qsizetype index) const
index のエントリーを返す。
qsizetype QRhiTextureUploadDescription::entryCount() const
エントリー数を返す。
void QRhiTextureUploadDescription::setEntries(std::initializer_list<QRhiTextureUploadEntry> list)
エントリーのlist を設定する。
template <typename InputIterator> void QRhiTextureUploadDescription::setEntries(InputIterator first, InputIterator last)
イテレーターfirst とlast を使って、エントリーのリストを設定する。
© 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.