我正在构建的应用程序必须以流畅的帧速率在屏幕上绘制大约400个四边形形状。形状255的排列和绘制旋转在0-360度的任何地方。考虑到它需要的内存量,我不认为预渲染它们会有效(尽管我可能错了)。它们还具有24位颜色范围。现在我用路径绘制它们,所有的旋转和平移都由生成值的函数处理。虽然这个实现是有效的(所有这些都是25帧的低帧速率),但我觉得有一种更有效的方法。说实话,openGL和java看起来很混乱,但如果它是唯一的选择那么我就会人工并学习它。
TL; DR 这段代码对于不断变化的形状是最有效的吗?
void quad(Canvas canvas,Paint paint, float x1,float y1, float x2,float y2, float x3,float y3,float x4,float y4, float xoff, float yoff, int color){
float[] hsvc = { map(color,0,100,0,360),.8f,1};
paint.setColor(Color.HSVToColor(hsvc));
Path path = new Path();
path.moveTo(x1, y1);
path.lineTo(x2, y2);
path.lineTo(x3, y3);
path.lineTo(x4, y4);
path.close();
path.offset(xoff, yoff);
canvas.drawPath(path, paint);
}
谢谢!
答案 0 :(得分:2)
你的排列是什么?你如何轮换路径?
由于Path
似乎在Android中是可变的,因此您可能会尝试重用某个实例,看看它是否能为您提供更好的结果(例如,使用Path.reset()
)。
答案 1 :(得分:1)
一些跟进:
使用Android的Canvas系统,Paths是我能找到的最有效的方式。我最终使用的是opengl,这是一个更好的选择。