Android---OpenGL ES之添加动作

移动开发 Android
在本文中,你需要使用前面几篇博文中介绍的示例,给图形添加旋转动作。OpenGLES提供了一些用于在三维空间中移动和变换被绘制的对象的能力,以及其他的创建良好用户体验的独特方式。

在屏幕上绘制对象是OpenGL的最基本功能,你可以使用其他的Android图形框架类,如Canvas和Drawable对象来完成这些功能。OpenGLES提供了一些用于在三维空间中移动和变换被绘制的对象的能力,以及其他的创建良好用户体验的独特方式。

在本文中,你需要使用前面几篇博文中介绍的示例,给图形添加旋转动作。

旋转图形

使用OpenGL ES 2.0来旋转一个绘制对象是相对简单的。你要创建另外的变换矩阵(旋转矩阵),然后把它跟投影和摄像机变换矩阵组合到一起:

  1. privatefloat[]mRotationMatrix =newfloat[16]; 
  2.   public void onDrawFrame(GL10 gl) { 
  3.   ... 
  4.   // Create a rotationtransformation for the triangle 
  5.   long time = SystemClock.uptimeMillis() % 4000L; 
  6.   float angle = 0.090f * ((int) time); 
  7.   Matrix.setRotateM(mRotationMatrix, 0, angle, 00, -1.0f); 
  8.   // Combine the rotationmatrix with the projection and camera view 
  9.   Matrix.multiplyMM(mMVPMatrix, 0, mRotationMatrix, 0, mMVPMatrix, 0); 
  10.   // Draw triangle 
  11.   mTriangle.draw(mMVPMatrix); 
  12.   } 

 做了这些改变之后,如果你的三角形没有旋转,那么就要确认你是否完成了GLSurfaceView.RENDERMODE_WHEN_DIRTY设置。

启用连续的渲染

如果你一直跟随在学习本文的示例代码,那么要确保像下面代码那样,注释掉对渲染模式的设置,否则OpenGL只会旋转图形一次,然后等待来自GLSurfaceView容器的requestRender()方法的调用。

  1.   publicMyGLSurfaceView(Context context){ 
  2.   ... 
  3.   // Render the view onlywhen there is a change in the drawing data 
  4.   //setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);// comment out for 
  5. auto-rotation 
  6.   } 

除非对象的变化跟任何用户交互无关,否则设置一个开关标记是一个好主意。

本文译自:http://developer.android.com/training/graphics/opengl/motion.html

责任编辑:闫佳明 来源: bbs.9ria
相关推荐

2014-04-29 13:58:11

OpenGL ESAndroid响应触屏事件

2014-04-29 14:08:40

OpenGL ESAndroid应用投影

2014-04-29 14:16:54

2014-04-29 14:27:59

OpenGL ES 2Android绘制纹理

2014-04-24 13:35:11

OpenGL ES2.iOSAndroid

2014-04-29 14:49:37

OpenGL ES 2Android应用投影

2014-04-24 11:16:00

OpenGL ES 2入门

2013-07-05 14:45:05

AndroidOpenGL ES开发

2014-06-18 10:34:41

Android字体渲染器OpenGL ES

2017-07-04 12:26:14

ARARKit

2017-07-19 15:25:16

iOS开发ARKitOpen GL

2014-07-16 15:49:13

AndroidOpenGL 4.4

2013-09-26 14:09:31

iOS开发OpenGL ES教程绘制矩形

2017-07-06 15:02:53

OpenGL ES架构GPU

2014-04-24 13:26:24

OpenGL ES2.iOSiPhone

2014-04-24 14:00:35

OpenGL ES 2编程

2013-04-26 10:26:08

2014-04-29 13:16:42

OpenGLAndroid库加载过程

2013-09-02 15:46:06

OpenGLWindows

2013-07-25 09:32:26

OpenGL ESAndroid4.3
点赞
收藏

51CTO技术栈公众号