据我所知,Android 中有 2 个图形引擎:OpenGL ES 和 Skia。两者都提供了一套绘图API,并将图形数据输出到底层的GraphicBuffer。我的问题是 GraphicBuffer 的数据格式是什么?是标准吗?
问问题
578 次
1 回答
2
OpenGL 不是图形引擎,它是直接与 GPU 对话的绘图 API。它不像 OpenGL 是一个库,它可以绘制某种格式的图像,然后将其加载到图形处理器上。OpenGL 通常直接在图形处理器上运行。
然而,Skia 确实是一个图形引擎。它可以在软件中渲染到像素缓冲区或 PDF。或者它可以进行 OpenGL 调用,这是它通常在 Android 上所做的。
图形缓冲区对象实际上是一个抽象句柄,它表示保存图形数据的实际内存。但是没有“标准格式”;每个 GPU 可能有自己的首选布局。重要的参数是每种 RAW 图像格式的参数:原点、行长、步幅、通道数、每个通道的位数、像素数据对齐。
然而,最常见的格式是 BGRA,每像素 8 位,stride == 行长度,4 字节数据对齐。但是对于作为开发人员的你来说,操作系统在幕后使用什么并不重要。
于 2014-01-07T10:18:13.817 回答