Android OpenGl 学习笔记四,绘制3D图形
2017-05-25 本文已影响109人
无灬痕
很奇怪,按照学习路线 这篇应该是给绘制的图形着色才对的,为什么跳到直接绘制3D图形了呢,
因为我觉得着色这快相对简单,只要在绘制图形前调用
gl.glEnableClientState(GL10.GL_COLOR_ARRAY);(注,这个方法指的是启动颜色缓冲区,跟绘制顶点坐标的时候启动顶点缓冲区是一样的,此方法与gl.glDisableClientState()一同出现,相当于一个open,一个close)
接下来就能调用gl.glColorPointer()了,当然也可以调用gl.glColor4f();这个方法;
以上结束了添加颜色的过程~
===================================================================================
绘制3D图形
==
- 按照步骤首先写一个基类Mesh,在这里写几个方法方便调用,定义几种类型的缓冲区(再次注释,绘图时都是通过缓冲区传过来数据来绘图的,所以每次绘图前记得启动缓冲区(open))
- 禁接着写一个Cube类继承自Mesh,定义一个顶点坐标数组和一个顶点顺序数组接着调用Mesh的set方法。
-
绘图这块搞完了,最后肯定是在渲染器里初始化跟调用啦~~利用上一章节的渲染器
image.png -
最后在onDrawFrame()方法里调用
image.png
基本就搞完啦~~最后,发现一个问题
image.png
点线点线 链接起来,怎么看都是一个方体怎么到了最后显示的是一个六方形???
(PS:这里修改了原CAD图改成上色后的图)
想象下OpenGl只能画点 线 三角形,然后这个立体几何是由多个三角形组成的~~然后沿着较明显的线想象这个立体几何
注释掉这个~那么久不旋转了 看到的就是正方形(建议去掉着色查看~~就这颜色无法直视~~堆一起了)