码迷,mamicode.com
首页 > 其他好文 > 详细

openGL的使用步骤

时间:2014-07-01 00:57:44      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:color   使用   width   数据   os   cti   

使用openGL步骤:
1.创建GLSurfaceView对象
2.创建GLSurfaceView.renderer实现类.
3.设置activity的contentView,以及设置view的render对象.
4.实现render类的过程.
 a.onSurfaceCreate()方法
  1.设置清屏的颜色和启用顶点缓冲区
  //设置清屏色
  gl.glClearColor(0, 0, 0, 1);
  //启用顶点缓冲区.
  gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
 b.onSurfaceChanged()方法
  1.设置viewport(视口)
   gl.glViewport(0, 0, width, height);
  2.操纵投影矩阵,设置平截头体(比例通常和视口比例相同,否则输出画面会走样)
   //矩阵模式,投影矩阵,openGL基于状态机
   gl.glMatrixMode(GL10.GL_PROJECTION);
   //加载单位矩阵
   gl.glLoadIdentity();
   //平截头体
   gl.glFrustumf(-1f, 1f, -ratio, ratio, 3, 7);
 c.onDrawFrame()方法
  1.清除颜色缓冲区
   gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
  2.操纵模型视图矩阵,设置眼球的参数
   gl.glMatrixMode(GL10.GL_MODELVIEW);
   gl.glLoadIdentity();//加载单位矩阵
   GLU.gluLookAt(gl, 0, 0, 5, 0, 0, 0, 0, 1, 0);
  3.定义图形顶点坐标值数组
   float[] coords = {
    0f,0.5f,0f,
    -0.5f,-0.5f,0f,
    0.5f,-0.5f,0f
   };
  4.将顶点坐标转换成缓冲区数据
   //分配字节缓存区空间,存放顶点坐标数据
   ByteBuffer ibb = ByteBuffer.allocateDirect(coords.length * 4);
   //设置的顺序(本地顺序)
   ibb.order(ByteOrder.nativeOrder());
   //放置顶点坐标数组
   FloatBuffer fbb = ibb.asFloatBuffer();
   fbb.put(coords);
   //定位指针的位置,从该位置开始读取顶点数据
   ibb.position(0);
  5.设置绘图颜色
   gl.glColor4f(1f, 0f, 0f, 1f);
  6.指定顶点缓冲区指针
   //3:3维点,使用三个坐标值表示一个点
   //type:每个点的数据类型
   //stride:0,跨度.
   //ibb:指定顶点缓冲区
   gl.glVertexPointer(3, GL10.GL_FLOAT, 0, ibb);
  7.绘图
   //0:起始点:
   //3:绘制点的数量
   gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);

openGL的使用步骤,布布扣,bubuko.com

openGL的使用步骤

标签:color   使用   width   数据   os   cti   

原文地址:http://www.cnblogs.com/danmao/p/3817295.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!