En esta página

QRhiTextureSubresourceUploadDescription Class

Describe la fuente de un nivel mip en una capa en una operación de carga de textura. 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

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

Descripción detallada

El contenido fuente se especifica como QImage o como un blob sin comprimir. El primero sólo se permite para texturas sin comprimir con un formato que pueda asignarse a QImage, mientras que el segundo se admite para todos los formatos, incluidos los de coma flotante y los comprimidos.

Nota: image() y data() no pueden establecerse al mismo tiempo.

destinationTopLeft() especifica la esquina superior izquierda del rectángulo de destino. El valor predeterminado es (0, 0).

Un sourceSize() vacío (por defecto) indica que se asume que el tamaño es el tamaño del sub-recurso. Con cargas basadas en QImage, esto implica que el tamaño de la fuente image() debe coincidir con el del subrecurso. En cambio, cuando se proporcionan datos sin procesar, debe proporcionarse un número suficiente de bytes en data().

sourceTopLeft() sólo se admite para cargas basadas en QImage, y especifica la esquina superior izquierda del rectángulo de origen.

Nota: La configuración de sourceSize() o sourceTopLeft() puede provocar una copia interna de QImage, dependiendo del formato y del backend.

Cuando se proporcionan datos sin procesar y no se especifica el stride mediante setDataStride(), el stride (paso de fila, longitud de fila en bytes) de los datos proporcionados debe ser igual a width * pixelSize, donde pixelSize es el número de bytes utilizados para un píxel, y no debe haber relleno adicional entre filas. No existe ningún requisito de alineación de inicio de fila.

Cuando hay datos no utilizados al final de cada fila en los datos brutos de entrada, llame a setDataStride() con el número total de bytes por fila. El stride debe ser siempre múltiplo del número de bytes de un píxel. El stride de fila sólo es aplicable a los datos de imagen para texturas con un formato sin comprimir.

Nota: El formato de los datos de origen debe ser compatible con el formato de la textura. Con muchas APIs gráficas los datos se copian tal cual en un búfer de almacenamiento, no hay conversión de formato intermedia proporcionada por QRhi. Esto también se aplica a los formatos de coma flotante, por ejemplo, RGBA16F requiere medios flotantes en los datos de origen.

Nota: Establecer el stride a través de setDataStride() sólo es funcional cuando QRhi::ImageDataStride es reportado como supported. En la práctica, se puede esperar que esto sea compatible en todas partes excepto en OpenGL ES 2.0.

Nota: Cuando se proporciona un QImage, el stride devuelto por QImage::bytesPerLine() se tiene en cuenta automáticamente.

Advertencia: Cuando se da un QImage y el QImage no posee los datos de píxel subyacentes, es responsabilidad del que llama asegurarse de que los datos asociados permanecen válidos hasta el final del fotograma. (Simplemente enviar el lote de actualización de recursos no es suficiente, los datos deben permanecer válidos hasta que se llame a QRhi::endFrame() para que sean portables a través de todos los backends) Si esto no se puede asegurar, se recomienda encarecidamente a quien llama que llame a QImage::detach() sobre la imagen antes de pasarla a uploadTexture().

Nota: Esta es una API RHI con garantías de compatibilidad limitadas, ver QRhi para más detalles.

Véase también QRhiTextureUploadDescription.

Documentación de las funciones miembro

[noexcept] QRhiTextureSubresourceUploadDescription::QRhiTextureSubresourceUploadDescription()

Construye una descripción de sub-recursos vacía.

Nota: una QRhiTextureSubresourceUploadDescription vacía no es útil por sí misma y no debe enviarse a un QRhiTextureUploadEntry. Como mínimo, la imagen o los datos deben establecerse primero.

[explicit] QRhiTextureSubresourceUploadDescription::QRhiTextureSubresourceUploadDescription(const QByteArray &data)

Construye una descripción de nivel mip con los datos de imagen especificados por data. Esto es adecuado también para formatos de coma flotante y comprimidos.

[explicit] QRhiTextureSubresourceUploadDescription::QRhiTextureSubresourceUploadDescription(const QImage &image)

Construye una descripción de nivel mip con un image.

El size de image debe coincidir con el tamaño del nivel mip. Para el nivel 0 es texture size.

La profundidad de bits de image debe ser compatible con la de texture format.

Para describir una carga parcial, llame después a setSourceSize(), setSourceTopLeft(), o setDestinationTopLeft().

QRhiTextureSubresourceUploadDescription::QRhiTextureSubresourceUploadDescription(const void *data, quint32 size)

Construye una descripción de nivel mip con los datos de la imagen se especifica por data y size. Esto es adecuado también para formatos de coma flotante y comprimidos.

data puede destruirse o modificarse con seguridad una vez que esta función retorna.

QByteArray QRhiTextureSubresourceUploadDescription::data() const

Devuelve los datos de píxeles sin procesar establecidos actualmente.

Véase también setData().

quint32 QRhiTextureSubresourceUploadDescription::dataStride() const

Devuelve el stride de datos establecido actualmente.

Véase también setDataStride().

QPoint QRhiTextureSubresourceUploadDescription::destinationTopLeft() const

Devuelve la posición superior izquierda del destino actual. Por defecto es (0, 0).

Véase también setDestinationTopLeft().

QImage QRhiTextureSubresourceUploadDescription::image() const

Devuelve la dirección QImage.

Véase también setImage().

void QRhiTextureSubresourceUploadDescription::setData(const QByteArray &data)

Establece data.

Nota: image() y data() no pueden configurarse simultáneamente.

Véase también data().

void QRhiTextureSubresourceUploadDescription::setDataStride(quint32 stride)

Establece los datos stride en bytes. Por defecto es 0 y no siempre es relevante. Cuando se proporciona data() sin procesar, y no se especifica el stride mediante setDataStride(), el stride (paso de fila, longitud de fila en bytes) de los datos proporcionados debe ser igual a width * pixelSize donde pixelSize es el número de bytes utilizados para un píxel, y no debe haber relleno adicional entre filas. En caso contrario, si hay espacio adicional entre las líneas, establezca un valor distinto de cero stride. Todo esto es aplicable sólo cuando se proporcionan datos de imagen sin procesar, y no es necesario cuando se trabaja QImage ya que eso tiene su propio valor stride.

Nota: Establecer el stride a través de setDataStride() sólo es funcional cuando QRhi::ImageDataStride es reportado como supported.

Nota: Cuando se da un QImage, el stride devuelto por QImage::bytesPerLine() se tiene en cuenta automáticamente y por lo tanto no es necesario establecer el stride de datos manualmente.

Véase también dataStride().

void QRhiTextureSubresourceUploadDescription::setDestinationTopLeft(const QPoint &p)

Establece la posición superior izquierda de destino p.

Nota: En el caso más común de obtener los datos de la imagen de un QImage, Qt realiza la sujeción de los tamaños de carga de textura no válidos cuando la posición de destino + el tamaño de origen excede el tamaño del sub-recurso de textura de destino (es decir, el tamaño en el nivel mip dado). En este caso también se imprime un mensaje qWarning() en la salida de depuración. Esto se hace para evitar confusiones cuando las API 3D subyacentes se bloquean y provocan la eliminación de dispositivos GPU en un momento posterior al enviar los comandos. En cualquier caso, se recomienda a los desarrolladores que validen siempre las aplicaciones ejecutándolas con las capas de validación/depuración Vulkan, D3D12 o Metal activadas, ya que éstas ofrecen una gama mucho más amplia de comprobaciones sobre el uso de las API.

Véase también destinationTopLeft().

void QRhiTextureSubresourceUploadDescription::setImage(const QImage &image)

Establece image. Al cargar las texturas, los datos de la imagen se leerán tal cual, sin conversión de formatos.

Nota: image() y data() no pueden activarse al mismo tiempo.

Véase también image().

void QRhiTextureSubresourceUploadDescription::setSourceSize(const QSize &size)

Establece la fuente size en píxeles.

Nota: Establecer sourceSize() o sourceTopLeft() puede desencadenar una copia de QImage internamente, dependiendo del formato y del backend.

Véase también sourceSize().

void QRhiTextureSubresourceUploadDescription::setSourceTopLeft(const QPoint &p)

Establece la posición superior izquierda de la fuente p.

Nota: Establecer sourceSize() o sourceTopLeft() puede desencadenar internamente una copia de QImage, dependiendo del formato y del backend.

Véase también sourceTopLeft().

QSize QRhiTextureSubresourceUploadDescription::sourceSize() const

Devuelve el tamaño de la fuente en píxeles. El valor predeterminado es QSize, que indica toda la subfuente.

Véase también setSourceSize().

QPoint QRhiTextureSubresourceUploadDescription::sourceTopLeft() const

Devuelve la posición superior izquierda de la fuente. Por defecto es (0, 0).

Véase también setSourceTopLeft().

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