Articles of 2d

使用OpenGL ES 2.0绘制2D图像

我一直在努力使用openGL ES 2.0 for Android从jpg / png文件中绘制2D图像。 我看到的每个地方的教程都是用于纹理化3D图像,因此粗略地弄清楚如何绘制常规的2D Sprite。 我得到了一个正方形来绘制和旋转但是一旦它变成了纹理,我必须搞砸了某个地方,因为我一直收到一个错误,说DrawElements没有绑定任何数据,但如果我注释掉任何与纹理相关的代码,它工作正常。 任何帮助将不胜感激。 这是我的Sprite类和Renderer类的代码: public class Sprite { //Reference to Activity Context private final Context mActivityContext; //Added for Textures private final FloatBuffer mCubeTextureCoordinates; private int mTextureUniformHandle; private int mTextureCoordinateHandle; private final int mTextureCoordinateDataSize = 2; private int mTextureDataHandle; private final String vertexShaderCode = //Test “attribute vec2 a_TexCoordinate;” […]

Android – 如何绘制基于弧的渐变

我正在尝试创建一个逐渐从一种颜色到另一种颜色的弧(可变度数)。 例如从蓝色到红色: 这是我的代码: SweepGradient shader = new SweepGradient(center.x, center.y, resources.getColor(R.color.startColor),resources.getColor(R.color.endColor)); Paint paint = new Paint() paint.setStrokeWidth(1); paint.setStrokeCap(Paint.Cap.FILL); paint.setStyle(Paint.Style.FILL); paint.setShader(shader); canvas.drawArc(rectF, startAngle, sweepAngle, true, paint); 但结果是整个弧线涂上了相同的颜色。 编辑: 经过更多的实验,我发现颜色的扩散是由弧的角度决定的。 如果我绘制一个小角度的圆弧,则只显示第一种颜色。 角度越大,绘制的颜色越多。 如果角度很小,似乎没有梯度。 这是一个例子。 我画了4个弧–90,180,270和360: RectF rect1 = new RectF(50, 50, 150, 150); Paint paint1 = new Paint(); paint1.setStrokeWidth(1); paint1.setStrokeCap(Paint.Cap.SQUARE); paint1.setStyle(Paint.Style.FILL); SweepGradient gradient1 = new SweepGradient(100, 100, Color.RED, […]

Android车速表(针规)

创build一个简单的应用程序,计算你的速度,并显示在速度计graphics。 我可以做所有的速度计算,GPS计算等。但我不太确定animation。 除了温度计的例子之外,有没有人在针规上有很好的教程或例子?

在Unity中支持多种高宽比

我一直在试图创build一个支持Android和平板电脑的设备的每个纵横比的Unity 2D游戏。 有没有办法做到这一点,由Unity提供或推荐?

了解Android的Canvas.saveLayer(…)

我希望saveLayer方法将允许我绘制到不同的“图层”,然后一旦绘图完成,无论按照我select的顺序合并图层和canvas。 显而易见的问题是“为什么不重新安排你的绘图操作呢?” 答案是我不能: 我有一个path,我需要画在canvas上。 在后台/最低z-index我想绘制的path封闭,并使用填充样式一些额外的点。 最重要的是,我只想画出原来在path中的点的轮廓。 由于我无法撤消向Path添加点,我唯一的select是克隆path,或者绘制到第二个图层,以后可以放在其他任何图层上。 saveLayer()似乎提供了这种function,但它不像我期待的那样。 我的操作基本stream程是这样的: int overlay = canvas.saveLayer(…); // drawing operations for my uppermost layer … int background = canvas.saveLayer(…); // drawing operations for my background layer … // merge the offscreen background bitmap with the canvas: canvas.restoreToCount(background); // merge the offscreen overlay bitmap with the canvas: canvas.restoreToCount(overlay); 代码运行时,背景和叠加层的sorting完全没有改变; 先画的是底部,最后画的是顶部。 […]

Android上实时graphics编程的最佳语言是什么?

Google的一些使我相信C ++是实时2Dgraphics编程的最佳语言,但是由于Android是基于Java的,所以仍然是最好的select? 或者我们必须使用NDK来降低速度呢? 我的程序也有很多科学计算,我知道C ++是最好的/最快的… … 之前我从来没有对Android做任何事情,所以现在我真的很无奈。 如果我只是错误的方式,请给我其他的build议…我碰到的其他一些词汇是OpenGL(我有经验,但这更多的3D,对吧?)和帆布(不要相当得到这个)? 如果我能够获得像GPU一样的function,那就太棒了。

animation与android中的animationSet()

好的,这里是我在我的活动中有一个ImageView的问题,这里是它在main.xml中的样子: <ImageView android:id="@+id/ic" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon" android:layout_gravity="center_horizontal"/> 我想要这个图像移动-200(左),然后到100(右),然后回到0有弹跳效果。 我用我的代码实现了这个: as = new AnimationSet(true); as.setFillEnabled(true); as.setInterpolator(new BounceInterpolator()); TranslateAnimation ta = new TranslateAnimation(-300, 100, 0, 0); ta.setDuration(2000); as.addAnimation(ta); AnimationSet sa = new AnimationSet(true); sa.setFillEnabled(true); sa.setInterpolator(new DecelerateInterpolator()); TranslateAnimation ta2 = new TranslateAnimation(100, 0, 0, 0); ta2.setDuration(2000); sa.addAnimation(ta2); as.addAnimation(sa); 你可以在代码中看到我想要的X转换(-300,100),然后(100,0) 然而,图像不会像它应该移动,而只是停在100,然后弹跳… 嗯…,你们知道什么是错的,或者我该怎么做才能做到这一点?

在Android SurfaceView上实现捏和缩放

我正在使用SurfaceView在Android应用程序中显示大图像(通常比屏幕更大,但并不总是)。 这是非常简单的graphics,使用OnTouchListener或GestureDetector实现滚动很容易。 graphics在Render循环中运行,但是对于所有真实的设备来说,性能似乎已经足够了(尽pipe仿真器可能有点痛苦)。 我正在考虑在图像上实施捏和缩放,但是我宁愿避免去OpenGL,因为我对OpenGL的经验很less,使用OpenGL看起来好像太简单了。 看起来好像android.graphics.Camera类可能允许我实现我想要的缩放function。 有谁知道任何一个很好的例子,显示在一个基本的Android SurfaceView的捏function缩放像function的实现? 另外,如果你已经实现了这样的东西,对性能有什么想法? 鉴于这里所要求的是如此简单,OpenGL值得额外的麻烦吗? 这个问题在这里还不清楚,还是我在Android开发人员网站上丢失了一些非常明显的文档/代码,我应该find?

不能find合适的例子为android 2d opengl精灵类至极不使用GL11Ext绘图

正如SpriteMethodTest所说,绘制精灵有很多方法。 首先,我试图canvas,并有一些性能问题。 比我决定学习opengl。 我使用GL11Ext扩展取得了我的第一个成就。 但是默认情况下,当你绘制纹理时,他们被翻转,设备屏幕的左下angular(横向模式)的x和y轴为零,不像canvas,你不能旋转精灵。 比我试图影响使用GLU看这个轴视图。 但没有效果。 比我想旋转我的精灵,并没有像他们所说的影响GL11Ext的原因。 所以我现在有主要的stackoverflow条件,基本的问题是: 1.使用哪种方法实现缩放,旋转和跳跃对精灵的影响以及以老旧的方式查看X和Y轴[(0,0)在景观模式左上angular)? 2.宇宙中是否有一些SPRITE CLASS示例,WICH只使用1种好的方式来表示SPRITE渲染? (SpriteMethodTest让我困惑不已)

Android的 – 如何绘制一个基于弧的渐变

我正在尝试创build一个逐渐从一种颜色到另一种颜色的弧度(可变度数)。 从蓝色到红色的例子: 这是我的代码: SweepGradient shader = new SweepGradient(center.x, center.y, resources.getColor(R.color.startColor),resources.getColor(R.color.endColor)); Paint paint = new Paint() paint.setStrokeWidth(1); paint.setStrokeCap(Paint.Cap.FILL); paint.setStyle(Paint.Style.FILL); paint.setShader(shader); canvas.drawArc(rectF, startAngle, sweepAngle, true, paint); 但结果是整个弧线被涂上了相同的颜色。 编辑: 经过更多的实验后,我发现颜色的扩散是由弧的angular度决定的。 如果我绘制一个小angular度的弧线,只显示第一个颜色。 angular度越大,绘制的颜色越多。 如果angular度很小,似乎没有梯度。 这是一个例子。 我正在绘制4弧 – 90,180,270和360: RectF rect1 = new RectF(50, 50, 150, 150); Paint paint1 = new Paint(); paint1.setStrokeWidth(1); paint1.setStrokeCap(Paint.Cap.SQUARE); paint1.setStyle(Paint.Style.FILL); SweepGradient gradient1 = new SweepGradient(100, […]