在OpenGL中拥有drawImage / drawLine

时间:2012-06-15 14:27:47

标签: android opengl-es buffer vbo

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

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

  • 颜色
  • alpha值
  • 行的宽度
  • 旋转(仅适用于图像)
  • 尺寸/比例(也适用于图像)
  • 混合方法(subrtract,add,normal-alpha)

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

我认识到的第一个事实是:当然,绘制图像比图像线(由于VBO更快)更快,但是:我无法将顶点数据预先放入到用于imageLines的VBO中,因为imageLines没有静态形状像普通图像(变化的线长,变化的线宽和x1,y1和x2的顶点位置,y2经常变化) 这就是为什么我使用普通的Floatbuffer而不是VBO。

所以我的问题是:管理图像和其他2D图形功能的最佳方法是什么。对我而言,它非常重要,引擎的用户能够尽可能多地绘制图像/ 2D图形,而不会失去很多性能。

您可以在此处找到绘制图像,图像线,rects,四边形等功能: https://github.com/Chrise55/LLama3D/blob/master/Llama3DLibrary/src/com/llama3d/object/graphics/image/ImageBase.java

这里有一个例子,它看起来很多图像(测试人工神经网络),它工作正常,但已经有点慢与许多图像...... :( testing artificial neural networks

0 个答案:

没有答案
相关问题