路径是绘制变化形状的最有效方式吗?

时间:2012-01-26 17:47:11

标签: android android-canvas

我正在构建的应用程序必须以流畅的帧速率在屏幕上绘制大约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);
    }

谢谢!

2 个答案:

答案 0 :(得分:2)

你的排列是什么?你如何轮换路径?

由于Path似乎在Android中是可变的,因此您可能会尝试重用某个实例,看看它是否能为您提供更好的结果(例如,使用Path.reset())。

答案 1 :(得分:1)

一些跟进:

使用Android的Canvas系统,Paths是我能找到的最有效的方式。我最终使用的是opengl,这是一个更好的选择。