Android OpenGL 学习笔记

http://www.cnblogs.com/shengdoushi/archive/2011/01/13/1934181.html#viewSource

http://www.douban.com/note/74862515/

http://blog.csdn.net/hecker385/article/details/6678621

 

 

创建一个OpenGLRenderer 实现 GLSurfaceView.Renderer接口:

  • onSurfaceCreated : 在这个方法中主要用来设置一些绘制时不常变化的参数,比如:背景色,是否打开 z-buffer等。
  • onDrawFrame: 定义实际的绘图操作。 一直在刷新调用。
  • onSurfaceChanged: 如果设备支持屏幕横向和纵向切换,这个方法将发生在横向<->纵向互换时。此时可以重新设置绘制的纵横比率。

        GLSurfaceView 的渲染模式有两种,一种是连续不断的更新屏幕,另一种为on-demand ,setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY),只有在调用requestRender()  在更新屏幕。 缺省为RENDERMODE_CONTINUOUSLY 持续刷新屏幕。

 

通常一个纹理映射的步骤是:

  1. 创建纹理对象。就是获得一个新的纹理句柄 ID.
  2. 指定纹理。就是将数据赋值给 ID 的纹理对象,在这一步,图像数据正式加载到了 ID 的纹理对象中。
  3. 设定过滤器。定义了opengl现实图像的效果,如纹理放大时的马赛克消除。
  4. 绑定纹理对象。就是将 ID 的纹理作为下面操作的纹理。
  5. 纹理映射。将已绑定纹理的数据绘制到屏幕上去,在这一步,就能看到贴图的效果了。

其实最重要的是3步

1.定义点的3维坐标, 下面4个向量就定义了3维空间里的4个点,就是一个平面

-1.0f, -1.0f, 1.0f, //v0
1.0f, -1.0f, 1.0f, //v1
 -1.0f, 1.0f, 1.0f, //v2
 1.0f, 1.0f, 1.0f, //v3

2.定义贴图材质和坐标的映射, 就是图的4个角怎么对到上面的平面上,就是怎么贴
0.0f, 0.0f, //图的左下对应 v0点, 这里的只是表示4个角,不代表图的长度
0.0f, 1.0f, // 图的右下对应 v1
1.0f, 0.0f,
1.0f, 1.0f,

3上面已经把一个图和3维中的一个面做好了映射,下面就是画了。
opengl es里面贴图时只支持三角形的画法, 所以你要定义怎么画三角形的索引,就是上面的1里面的点画的顺序的数组
0,1,3, //画v0, v1, v3表示的三角形
0,3,2

最后画的代码:

gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]); //绑定已经加载的材质
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer); //设置3维点
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer); //设置材质2维到3维的映射
gl.glDrawElements(GL10.GL_TRIANGLES, indices.length, GL10.GL_UNSIGNED_BYTE, indexBuffer);//根据3里面的索引来画贴好图的三角形

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值