【发布时间】:2013-09-19 01:27:26
【问题描述】:
我正在尝试编写一个GPUImageFilter 子类,该子类可能会呈现数千个带羽毛的圆圈(是的,它是笔触)。我目前的方法包括一个 glDrawArrays 调用,它绘制一吨正方形,以及每个顶点属性,通知片段着色器每个的质心在哪里,以便着色器可以绘制一个圆,其 alpha 值向边缘逐渐变细(离质心最远)。
这在我的测试设备(iPad Mini)上非常快,除非有 (a) 超过 1,000 个圆圈或 (b) 圆圈真的很大。多边形很快,但着色器速度很快。
我想知道将圆圈直接渲染到字节缓冲区是否会更快,并让 GPUImage(使用GPUImageRawDataInput)尽可能获取字节以(通过其他过滤器)渲染到屏幕。
Accelerate 框架是我知道如何在 iOS 上操作字节的最快方法。例如,我发现我可以使用这种方法非常快速地用 vDSP 填充 RGBA 缓冲区:
const int iValue = [RGBA colour as int];
vDSP_vfilli(&iValue, (int*)bytes, 1, width * height);
谁能建议我如何使用vDSP 或vImage 函数集将羽化圆渲染到我的字节缓冲区中?唯一能想到的方法涉及太多的for 循环而无法发挥性能。
【问题讨论】:
标签: ios opengl-es gpuimage accelerate-framework