C
图像结构
struct Qul::Image一个允许直接访问像素数据的图像表示。 更多信息...
头文件 | #include <qul/image.h> |
自 | Qt Quick Ultralite 1.5 |
公共函数
Image(int width, int height, Qul::PixelFormat pixelFormat) | |
Image(uint8_t *bits, int width, int height, Qul::PixelFormat pixelFormat, int bytesPerLine = -1, Qul::Image::CleanupFunction cleanupFunction = nullptr) | |
图像() | |
void | beginWrite() |
const uint8_t * | bits() const |
uint8_t * | bits() |
int | bitsPerPixel() const |
int | bytesPerLine() const |
void | endWrite() |
int | height() const |
Qul::PixelFormat | pixelFormat() const |
void | reallocate(int width, int height, Qul::PixelFormat pixelFormat) |
int | width() const |
Qul::SharedImage | operator Qul::SharedImage() const |
静态公共成员
const uintptr_t | requiredAlignment |
const uintptr_t | requiredPixelWidthAlignment |
详细描述
您可以使用 Image 将图像数据传递给 Qt Quick Ultralite 渲染器。Image 可以在堆上分配新的图像数据,或者接受您已单独准备好的内存。
// Allocate new image data on the heap Qul::Image image1(drawImgSize, drawImgSize, Qul::PixelFormat_ARGB32_Premultiplied); // Uses the data at myimagedata without a copy. // (no cleanup function passed in, so lifetime of myimagedata must exceed any use) // Application should take care about memory and texture width alignment Qul::Image image2(getLogoData(), logoImgWidth, logoImgHeight, Qul::PixelFormat_ARGB32_Premultiplied);
Image 拥有传入的数据。如果在最后一个 Image 或 SharedImage 引用被销毁时需要进行清理,请将 cleanupFunction 传递给构造函数。
一旦构建了 Image 实例,图像数据只能在 beginWrite() 和 endWrite() 调用之间修改(参见 ImageWriteGuard)。
注意:某些平台需要地址对齐或要求图像数据的 bytes-per-line 对齐到像素的特定倍数
bytesPerLine % (bytesPerPixel * requiredPixelWidthAlignment) == 0
平台通常不支持所有像素格式。请参阅Image::requiredAlignment和Image::requiredPixelWidthAlignment。
另请参阅SharedImage和ImageWriteGuard。
成员函数文档
Image::Image(int width, int height, Qul::PixelFormat pixelFormat)
通过在堆上分配新的图像数据来构建。
不是所有pixelFormat在所有平台上都受支持。不支持格式的图像不会被绘制,但不会导致错误。
Image::Image(uint8_t *bits, int width, int height, Qul::PixelFormat pixelFormat, int bytesPerLine = -1, Qul::Image::CleanupFunction cleanupFunction = nullptr)
从外部拥有的内存构建。
Image将拥有bits的所有权。当最后一次引用数据(包括SharedImage引用)被销毁时,将运行cleanupFunction。
某些平台对图像数据有特定要求。如果这些条件不满足,应用程序将打印错误并停止。请参阅Image::requiredAlignment和Image::requiredPixelWidthAlignment。
不是所有pixelFormat在所有平台上都受支持。不支持格式的图像不会被绘制,但不会导致错误。
在beginWrite()和endWrite()调用之间,可以更改bits后面的图像数据。另请参阅ImageWriteGuard。
如果bytesPerLine为-1,则基于width和pixelFormat进行计算。
Image::Image()
构建一个空图像。
void Image::beginWrite()
为写操作准备引用的内存。
在写入分配的内存区域之前调用此函数以避免潜在的伪影。完成时调用endWrite。
许多平台支持异步运行的硬件加速绘图操作。此函数等待所有从分配的内存区域读取的操作完成。在其他平台上,一旦写操作完成,可能需要将图像上传到GPU内存。
注意:如果在调用endWrite之前需要图像进行渲染,则屏幕上不会绘制任何内容。
另请参阅endWrite。
const uint8_t *Image::bits() const
返回用于读取的图像像素数据。
uint8_t *Image::bits()
返回用于读取或写入的图像像素数据。
注意:必须在beginWrite()和endWrite调用之间放置对像素数据的修改。
int Image::bitsPerPixel() const
返回图像每像素的位数。
int Image::bytesPerLine() const
返回每行的字节数。
void Image::endWrite()
结束对引用内存的写入操作。
这可能会触发缓存刷新,为异步读取操作做准备,或者将图像数据上传到GPU内存。
如果图像数据当前可见于屏幕上,它将被重新绘制以用于下一帧。
另请参阅beginWrite。
int Image::height() const
返回图像的像素高度。
Qul::PixelFormat Image::pixelFormat() const
返回图像的PixelFormat。
void Image::reallocate(int width, int height, Qul::PixelFormat pixelFormat)
更改图像的大小和格式,影响所有现有引用。
这将在现有图像数据上执行清理函数,并在堆上为给定的width、height和pixelFormat分配新的图像数据以替换它。
所有对此Image的引用都将更新为新图像数据。
int Image::width() const
返回图像的像素宽度。
Qul::SharedImage Image::operator Qul::SharedImage() const
隐式转换为SharedImage。
Image和SharedImage使用对底层数据的相同引用计数。
成员变量文档
const uintptr_t Image::requiredAlignment
平台对图像数据所需的最小对齐。
另请参阅Image::requiredPixelWidthAlignment。
const uintptr_t Image::requiredPixelWidthAlignment
平台要求图像宽度是这个值的倍数。
在某些Qt许可证下可用。
了解更多。