En esta página

QRhiTextureUploadDescription Class

Describe una operación de carga de texturas. Más...

Cabecera: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS GuiPrivate)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake: QT += gui-private
Desde: Qt 6.6

Funciones Públicas

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)

Descripción detallada

Usada con QRhiResourceUpdateBatch::uploadTexture(). Esta función tiene dos variantes: una que toma un QImage y otra que toma un QRhiTextureUploadDescription. La primera es una versión de conveniencia, que crea internamente un QRhiTextureUploadDescription con una única imagen de nivel 0 para la capa 0.

Un ejemplo del caso común y simple de querer subir el contenido de un QImage a un QRhiTexture con un tamaño de píxel coincidente:

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);

Cuando se trate de mapas de cubos, imágenes mip pregeneradas, texturas comprimidas o cargas parciales, las aplicaciones tendrán que utilizar esta clase en su lugar.

QRhiTextureUploadDescription también permite especificar subidas por lotes, que son útiles por ejemplo cuando se genera un atlas o una textura de caché de glifos: múltiples subidas parciales para el mismo sub-recurso (es decir, la misma capa y nivel) son compatibles, y pueden ser, dependiendo del backend y la API gráfica subyacente, más eficientes cuando se agrupan en el mismo QRhiTextureUploadDescription en lugar de emitir comandos uploadTexture() individuales para cada uno de ellos.

Nota: Los Cubemaps tienen una capa para cada una de las seis caras en el orden +X, -X, +Y, -Y, +Z, -Z.

Por ejemplo, especificar las caras de un cubemap podría tener el siguiente aspecto:

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);

Otro ejemplo que especifica imágenes mip para una textura comprimida:

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);

Con cargas parciales dirigidas al mismo sub-recurso, se recomienda agruparlas en una única solicitud de carga, siempre que sea posible:

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);

Nota: Se trata de una API RHI con garantías de compatibilidad limitadas, véase QRhi para más detalles.

Véase también QRhiResourceUpdateBatch.

Documentación de las funciones miembro

[constexpr noexcept] QRhiTextureUploadDescription::QRhiTextureUploadDescription()

Construye una descripción de carga de textura vacía.

QRhiTextureUploadDescription::QRhiTextureUploadDescription(const QRhiTextureUploadEntry &entry)

Construye una descripción de carga de textura con una única carga de sub-recursos descrita por entry.

QRhiTextureUploadDescription::QRhiTextureUploadDescription(std::initializer_list<QRhiTextureUploadEntry> list)

Construye una descripción de carga de textura con el list especificado de entradas.

Nota: list también puede contener múltiples elementos QRhiTextureUploadEntry con la misma capa y nivel. Esto tiene sentido cuando esas subidas son parciales, lo que significa que su descripción de sub-recursos tiene un tamaño de fuente o imagen menor que las dimensiones de los sub-recursos, y puede ser más eficiente que emitir uploadTexture()'s por separado.

const QRhiTextureUploadEntry *QRhiTextureUploadDescription::cbeginEntries() const

Devuelve un iterador constante que apunta al primer elemento de la lista de entradas.

const QRhiTextureUploadEntry *QRhiTextureUploadDescription::cendEntries() const

Devuelve un iterador constante que apunta justo después del último elemento de la lista de entradas.

const QRhiTextureUploadEntry *QRhiTextureUploadDescription::entryAt(qsizetype index) const

Devuelve la entrada en index.

qsizetype QRhiTextureUploadDescription::entryCount() const

Devuelve el número de entradas.

void QRhiTextureUploadDescription::setEntries(std::initializer_list<QRhiTextureUploadEntry> list)

Establece la dirección list de las entradas.

template <typename InputIterator> void QRhiTextureUploadDescription::setEntries(InputIterator first, InputIterator last)

Establece la lista de entradas utilizando los iteradores first y last.

© 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.