我画了个简单的线段,想要隔一两秒中这个线段就的位置就变一下。不知道怎么实现。
1.OpenglActivity.java 主activitypublic 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数组里面的坐标。但是不行。望不吝赐教,谢谢!
1.OpenglActivity.java 主activitypublic 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数组里面的坐标。但是不行。望不吝赐教,谢谢!
解决方案 »
- 安卓4.0以上系统安装程序自动关闭
- android pc socket 问题
- Android4.0.3中Camera在平板上分辨率为160,OptionMenu不显示
- android listview异步记载图片,不卡顿,不图片乱的问题怎么解决?
- 如何禁止/启动屏幕的触摸消息?弹出ProgressDialog进度框之后触摸屏幕就消失了
- 求助,一个关于WebView的问题
- 下载进度条怎么写?????
- Android Bitmap叠加合并
- android studio 测试项目不输出呢?
- 求问 Eclipse 中 android 手机调试时 如何 一按调试,就能自动点亮手机屏幕 并且 开始运行程序
- 关于分辨率的问题(设置是800*480,实际为480*320)
- Android通过网络发送请求的问题
...去掉或者改用GLSurfaceView.RENDERMODE_CONTINUOUSLY试试