QRhiTextureSubresourceUploadDescription 类

描述纹理上传操作中层的单个 mipmap 级别的源。 更多信息...

头文件 #include <QRhiTextureSubresourceUploadDescription>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
Qt 6.6

公共函数

QRhiTextureSubresourceUploadDescription()
QRhiTextureSubresourceUploadDescription(const QImage &image)
QRhiTextureSubresourceUploadDescription(const void *data, quint32 size)
QRhiTextureSubresourceUploadDescription(const QByteArray &data)
QByteArraydata() const
quint32dataStride() const
QPointdestinationTopLeft() const
QImageimage() const
voidsetData(const QByteArray &data)
voidsetDataStride(quint32 stride)
voidsetDestinationTopLeft(const QPoint &p)
voidsetImage(const QImage &image)
voidsetSourceSize(const QSize &size)
voidsetSourceTopLeft(const QPoint &p)
QSizesourceSize() const
QPointsourceTopLeft() const

详细描述

源内容可以是 QImage 或原始 blob。前者仅适用于可以映射到 QImage 的格式的不压缩纹理,而后者支持所有格式,包括浮点数和压缩格式。

注意: image() 和 data() 不能同时设置。

destinationTopLeft() 指定目标矩形的左上角。默认为 (0, 0)。

一个空的(默认)sourceSize() 表示假定大小为子资源的大小。使用基于 QImage 的上传时,这意味着源 image() 的大小必须与子资源匹配。当提供原始数据时,必须在 data() 中提供足够的字节数。

sourceTopLeft() 仅对基于 QImage 的上传支持,并指定源矩形的左上角。

注意:设置 sourceSize() 或 sourceTopLeft() 可能会根据格式和后端触发内部 QImage 复制。

提供原始数据时,如果未通过 setDataStride() 指定步进,则提供的数据的步进(行宽,每行字节数)必须等于 width * pixelSize,其中 pixelSize 是一个像素使用的字节数,并且行之间不得有额外的填充。没有行起始对齐的要求。

当原始数据的每行末尾有未使用的数据时,使用总行字节数调用 setDataStride()。步进必须是单个像素字节数的倍数。行步进仅适用于具有未压缩格式的纹理的图像数据。

注意:源数据的格式必须与纹理格式兼容。对于许多图形API,数据作为是地复制到暂存缓冲区,QRhi 没有提供中间格式转换。这也适用于浮点格式,例如,RGBA16F要求源数据中使用半浮点数。

注意:QRhi::ImageDataStride 被报告为 supported 时,通过 setDataStride() 设置步进才有效。在实际操作中,这通常可以在除OpenGL ES 2.0之外的所有地方实现。

注意:当提供 QImage 时,从 QImage::bytesPerLine() 返回的步进会被自动考虑。

警告:当提供 QImageQImage 不拥有底层像素数据时,必须由调用者确保相关数据在整个帧结束时保持有效。(仅提交资源更新批次是不够的,数据必须在 QRhi::endFrame() 被调用之前保持有效,以便能够在所有后端通用)如果无法确保这一点,强烈建议在将图像传递给 uploadTexture() 之前调用 QImage::detach()。

注意:这是一个RHI API,兼容性保证有限,有关详细信息,请参阅 QRhi

另请参阅:QRhiTextureUploadDescription

成员函数文档

[noexcept] QRhiTextureSubresourceUploadDescription::QRhiTextureSubresourceUploadDescription()

构建一个空的子资源描述。

注意:一个空的 QRhiTextureSubresourceUploadDescription 本身没有用,并且不应提交到 QRhiTextureUploadEntry。至少先设置图像或数据。

[显式] QRhiTextureSubresourceUploadDescription::QRhiTextureSubresourceUploadDescription(const QImage &image)

使用图像构建一个mip级别描述。

image的大小必须与mip级别的大小匹配。对于级别0,这是纹理大小

image的位深必须与纹理格式兼容。

要描述部分上传,之后调用setSourceSizesetSourceTopLeftsetDestinationTopLeft

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

使用由datasize指定的图像数据构建一个mip级别描述。这也适用于浮点数和压缩格式。

data在函数返回后可以安全地销毁或更改。

[显式] QRhiTextureSubresourceUploadDescription::QRhiTextureSubresourceUploadDescription(const QByteArray &data)

使用由data指定的图像数据构建一个mip级别描述。这也适用于浮点数和压缩格式。

QByteArray QRhiTextureSubresourceUploadDescription::data() const

返回当前设置的原始像素数据。

另请参阅 setData

quint32 QRhiTextureSubresourceUploadDescription::dataStride() const

返回当前设置的数据步进。

另请参阅 setDataStride

QPoint QRhiTextureSubresourceUploadDescription::destinationTopLeft() const

返回当前设置的指定目的地左上角位置。默认为(0, 0)。

另请参阅 setDestinationTopLeft

QImage QRhiTextureSubresourceUploadDescription::image() const

返回当前设置的QImage

另请参阅 setImage

void QRhiTextureSubresourceUploadDescription::setData(const QByteArray &data)

设置data

注意: image() 和 data() 不能同时设置。

另请参阅 data

void QRhiTextureSubresourceUploadDescription::setDataStride(quint32 stride)

设置数据stride的字节数。默认情况下为0,并不总是相关。在提供原始数据() 时,如果没有通过 setDataStride() 指定步长,则提供的数据的步长(行对齐,行长度以字节为单位)必须等于 宽度 * 像素大小,其中 像素大小 是一个像素占用的字节数,并且行之间不能有额外的填充。否则,如果行之间存在额外空间,则设置非零的stride。所有这些仅适用于提供原始图像数据的情况,而不需要当工作QImage时设置数据stride,因为这有自己的步长值。

注意:通过 setDataStride() 设置步长仅在QRhi::ImageDataStride 报告为受支持时功能有效。

注意:当给定量QImage时,从QImage::bytesPerLine() 返回的步长会自动考虑,因此无需手动设置数据步长。

另请参阅:数据步长

void QRhiTextureSubresourceUploadDescription::setDestinationTopLeft(const QPoint &p)

设置目标左上角位置p

另请参阅:目标左上角

void QRhiTextureSubresourceUploadDescription::setImage(const QImage &image)

设置image。在纹理加载时,图像数据将按原样读取,不进行格式转换。

注意: image() 和 data() 不能同时设置。

另请参阅:图像

void QRhiTextureSubresourceUploadDescription::setSourceSize(const QSize &size)

设置像素:size

注意:设置 sourceSize() 或 sourceTopLeft() 可能会根据格式和后端触发内部 QImage 复制。

另请参阅:源大小

void QRhiTextureSubresourceUploadDescription::setSourceTopLeft(const QPoint &p)

设置源左上角位置p

注意:设置 sourceSize() 或 sourceTopLeft() 可能会根据格式和后端触发内部 QImage 复制。

另请参阅:源左上角

QSize QRhiTextureSubresourceUploadDescription::sourceSize() const

以像素为单位返回源大小。默认为默认构造的QSize,表示整个子资源。

另请参阅:设置源大小

QPoint QRhiTextureSubresourceUploadDescription::sourceTopLeft() const

返回当前设置的源左上角位置。默认为(0, 0)。

另请参阅:设置源左上角

© 2024 Qt公司有限。包含在此处的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的GNU自由文档许可证版本1.3的条款获得的许可。Qt及其相应的徽标是芬兰和/或世界范围内Qt公司的商标。所有其他商标均为其各自所有者的财产。