Android OpenGl 学习笔记四,绘制3D图形

2017-05-25  本文已影响109人  无灬痕

很奇怪,按照学习路线 这篇应该是给绘制的图形着色才对的,为什么跳到直接绘制3D图形了呢,
因为我觉得着色这快相对简单,只要在绘制图形前调用
gl.glEnableClientState(GL10.GL_COLOR_ARRAY);(注,这个方法指的是启动颜色缓冲区,跟绘制顶点坐标的时候启动顶点缓冲区是一样的,此方法与gl.glDisableClientState()一同出现,相当于一个open,一个close)
接下来就能调用gl.glColorPointer()了,当然也可以调用gl.glColor4f();这个方法;

以上结束了添加颜色的过程~

===================================================================================
绘制3D图形
==

  1. 按照步骤首先写一个基类Mesh,在这里写几个方法方便调用,定义几种类型的缓冲区(再次注释,绘图时都是通过缓冲区传过来数据来绘图的,所以每次绘图前记得启动缓冲区(open))
  2. 禁接着写一个Cube类继承自Mesh,定义一个顶点坐标数组和一个顶点顺序数组接着调用Mesh的set方法。
  3. 绘图这块搞完了,最后肯定是在渲染器里初始化跟调用啦~~利用上一章节的渲染器


    image.png
  4. 最后在onDrawFrame()方法里调用


    image.png

基本就搞完啦~~最后,发现一个问题


image.png

点线点线 链接起来,怎么看都是一个方体怎么到了最后显示的是一个六方形???
(PS:这里修改了原CAD图改成上色后的图)

image.png image.png

想象下OpenGl只能画点 线 三角形,然后这个立体几何是由多个三角形组成的~~然后沿着较明显的线想象这个立体几何
注释掉这个~那么久不旋转了 看到的就是正方形(建议去掉着色查看~~就这颜色无法直视~~堆一起了)

上一篇下一篇

猜你喜欢

热点阅读