Open GL和Canvas哪种方法更适合在绘图应用程序中制作自定义画笔?

时间:2011-12-12 13:22:26

标签: android

我想在下面的图像中显示画笔以用于绘图应用。这是一种合适的方法 - Open GL或Canvas&我们该如何实施呢? enter image description here

3 个答案:

答案 0 :(得分:0)

我会说Canvas,因为你想修改一个图像。 OpenGLES适合显示图像,但是(据我所知)并没有修改纹理的方法(除非你渲染到纹理,然后通过一些修改渲染到屏幕,这并不总是如此有效)。

使用Canvas你可以使用绘制笔画的方法到你正在绘制的Bitmap上,在GLES中你必须修改纹理(使用画布),然后再将它上传到GPU,在它可以渲染之前,渲染很可能只是在其上绘制一个带有纹理的正方形(因为大多数移动GPU的填充率非常差,你不想单独绘制笔划)。

我想说的是; 让用户在openGLES表面上绘制的最方便的方法是通过在Canvas 上绘制来创建纹理。
但是,使用GL进行绘制可能仍有一些好处,因为Canvas操作可以在屏幕外执行,您可以将此数据推送到gl-renderer以(可能)加速屏幕绘制。

然而;如果你正在为Android 3.x +开发,你应该看看RenderScript(我个人从来没有机会使用它),但在这种情况下似乎是一个很好的解决方案。

答案 1 :(得分:0)

您最好的解决方案是使用本机代码。 Sketchbook就是这样做的。你可以通过浏览GIMP源代码http://www.gimp.org/source来弄清楚如何。 Out of Canvas vs OpenGL,Canvas将是最佳选择。

答案 2 :(得分:0)

这取决于。如果要静态编辑图像,请使用画布。但是如果您想在刷完屏幕后想要编辑,缩放,旋转,那么使用opengl会更容易。

使用opengl的示例:存储用户使用触摸进行的动作。创建一个存储运动的类,并具有大小,旋转等字段来绘制此类,只需在存储的运动后选择刷子图像的路径。