0

我在我的 android 图形引擎中实现了一些本机 2D 绘图功能,但是当我观察我的程序的性能时,现在又出现了另一个问题。

目前我正在实现一个 drawLine/drawImage 函数。总之,绘制每个不同的线/图像有以下不同的值:

  • 颜色
  • 阿尔法值
  • 线的宽度
  • 旋转(仅适用于图像)
  • 大小/比例(也适用于图像)
  • 混合方法(减法、加法、法线阿尔法)

现在,当绘制 imageLine 时,我将 CPU 计算的 6 个顶点(2 个三角形)的顶点位置和 uv 值放入 Floatbuffer 中,并在传递绘图信息(颜色、alpha 等)后立即使用 drawArrays 绘制它.) 通过制服到着色器。我画图的时候,传完信息后直接画出预设的VBO。

我认识到的第一个事实是:当然,绘制图像比图像线快得多(因为 VBO),而且:我不能将顶点数据预先放入图像线的 VBO,因为图像线没有像普通图像那样的静态形状(不同的线长,不同的线宽以及 x1,y1 和 x2,y2 的顶点位置变化太频繁)这就是为什么我使用普通的 Floatbuffer,而不是 VBO。

所以我的问题是:管理图像和其他 2D 图形功能的最佳方式是什么。对我来说,引擎的用户能够在不损失太多性能的情况下绘制尽可能多的图像/2D 图形,这很重要。

您可以在此处找到用于绘制图像、图像线、矩形、四边形等的函数: https ://github.com/Chrise55/LLama3D/blob/master/Llama3DLibrary/src/com/llama3d/object/graphics/image/ImageBase .java

这是一个例子,它在许多图像上看起来如何(测试人工神经网络),它工作得很好,但是对于那么多图像来说已经有点慢了...... :( 测试人工神经网络

4

0 回答 0