android平台用OpenGL ES绘制图像的移动
我画了个简单的线段,想要隔一两秒中这个线段就的位置就变一下。不知道怎么实现。
1.OpenglActivity.java 主activity
public class OpenglActivity extends Activity {
private GLSurfaceView view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* 创建一个 GLSurfaceView 用于绘制表面 */
view = new MyView(this);
/* 将创建好的 GLSurfaceView 设置为当前 Activity 的内容视图 */
setContentView(view);
}
}
2.MyView.java
public class MyView extends GLSurfaceView{
private GridRender myrender;
public MyView(Context context)
{
super(context);
myrender = new GridRender(context);
/* 设置 Renderer 用于执行实际的绘制工作 */
setRenderer(myrender);
/* 设置绘制模式为 持续绘制 */
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
// setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);
}
}
3.GridRender.java
private MyLine myline;
public GridRender(Context context)
{
myline = new MyLine();
}
public void onDrawFrame(GL10 gl)
{
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
myline.draw(gl);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
}
OnSurfaceChanged 和OnSurfaceCreated省略。
4.MyLine.java
public class MyLine {
private FloatBuffer mVertexBuffer;
private float[] data = {
1,0,1,
2,0,1
};
private int num = 5;
public MyLine()
{
ByteBuffer vbb = ByteBuffer.allocateDirect(data.length*4);
vbb.order(ByteOrder.nativeOrder());
mVertexBuffer = vbb.asFloatBuffer();
mVertexBuffer.put(data);
mVertexBuffer.position(0);
}
public void draw(GL10 gl){
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
gl.glDrawArrays(GL10.GL_LINES, 0, 2);
}
}
曾经试着在draw函数里面加一个update函数。意思是每次画完都更新一下data数组里面的坐标。但是不行。
望不吝赐教,谢谢!