使用多边形和四边形创建3D物体,在这一课里,我们把三角形变为立体的金子塔形状,把四边形变为立方体。
先看看三角形的顶点变成啥了
private float[] mTriangleArray = {
0.0f,1.0f,0.0f,
-1.0f,-1.0f,1.0f,
1.0f,-1.0f,1.0f,
0.0f,1.0f,0.0f,
1.0f,-1.0f,1.0f,
1.0f,-1.0f,-1.0f,
0.0f,1.0f,0.0f,
1.0f,-1.0f,-1.0f,
-1.0f,-1.0f,-1.0f,
0.0f,1.0f,0.0f,
-1.0f,-1.0f,-1.0f,
-1.0f,-1.0f,1.0f
};
private FloatBuffer mTriangleBuffer;
一个四个面,每个面三个点,地面没画。
你们仔细看看每个面,都是按逆时针方向画的。当然,如果你没有增加Cull剔除代码(上节课最后提到),至于顺时针,逆时针都无所谓,都画。但是我们还是推荐使用按照方向来写的array。
三角形的颜色数组来了
private float[] mColorArray={
1.0f,0.0f,0.0f,1.0f,
0.0f,1.0f,0.0f,1.0f,
0.0f,0.0f,1.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,
0.0f,0.0f,1.0f,1.0f,
0.0f,1.0f,0.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,
0.0f,1.0f,0.0f,1.0f,
0.0f,0.0f,1.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,
0.0f,0.0f,1.0f,1.0f,
0.0f,1.0f,0.0f,1.0f,
};
private FloatBuffer mColorBuffer;
注意,同一个点是同一个颜色。
立方体的颜色数组来了
private float[] mQuadColorArray={
0.0f,1.0f,0.0f,1.0f,
0.0f,1.0f,0.0f,1.0f,
0.0f,1.0f,0.0f,1.0f,
0.0f,1.0f,0.0f,1.0f,
1.0f,0.5f,0.0f,1.0f,
1.0f,0.5f,0.0f,1.0f,
1.0f,0.5f,0.0f,1.0f,
1.0f,0.5f,0.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,
1.0f,1.0f,0.0f,1.0f,
1.0f,1.0f,0.0f,1.0f,
1.0f,1.0f,0.0f,1.0f,
1.0f,1.0f,0.0f,1.0f,
0.0f,0.0f,1.0f,1.0f,
0.0f,0.0f,1.0f,1.0f,
0.0f,0.0f,1.0f,1.0f,
0.0f,0.0f,1.0f,1.0f,
1.0f,0.0f,1.0f,1.0f,
1.0f,0.0f,1.0f,1.0f,
1.0f,0.0f,1.0f,1.0f,
1.0f,0.0f,1.0f,1.0f,
};
private FloatBuffer mQuadColorBuffer;
不要晕,后面有了纹理就好了,不过这是基础,一定要掌握。
画图的代码来了
gl.glTranslatef(-1.5f, 0.0f, -6.0f);
gl.glRotatef(rtri, 0.0f, 1.0f, 0.0f);
//绕Y轴旋转
// gl.glColor4f(1f, 1f, 1f, 1f);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
gl.glColorPointer(4, GL10.GL_FLOAT, 0, mColorBuffer);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mTriangleBuffer);
gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 12); //四棱锥有4个面,每个面3个点
gl.glLoadIdentity();
gl.glTranslatef(1.5f, 0.0f, -6.0f);
gl.glRotatef(rquad, 1.0f, 0.0f, 0.0f);
gl.glColorPointer(4, GL10.GL_FLOAT, 0, mQuadColorBuffer);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mQuadsBuffer);
//依次画6个面
for (int i=0; i<6; i++){
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, i*4, 4);
}
rtri+=0.2f;
rquad-=0.15f;
分享到:
相关推荐
union2 Casptain Cook lession5-6 .docx
【压缩包子文件的文件名称列表】:spring_lession5 这个列表暗示了我们的学习资源可能包含了一系列Spring教程的第五部分。在这个部分,我们可以期待涵盖以下主题: 1. **依赖注入(Dependency Injection, DI)**:...
Android面试.exe lession1_view.exe lession2_布局.exe lession2_线性布局.exe lession2_雨滴.exe lession3_按钮.exe lession3_图片.exe lession3_图片2.exe ...... lession15_手机端离线聊天.exe lession15_手机端...
小费计算器应用演示 这是小费计算器的第二个安卓应用程序。 花费时间:总共花费4小时 完成的用户故事: 用户显示指定输入金额的指定百分比的小费 用户输入交易总额 用户可以选择小费金额(即 10%、15%、20%) ...
Lession03.sql
5. **设备状态** - 渲染设备的状态管理是Direct3D的重要部分,包括深度缓冲、模板缓冲、混合模式、裁剪平面等,这些都影响最终的渲染结果。 6. **DirectInput** - DirectInput用于直接与各种输入设备(如键盘、...
react-native-android-lession > 老穆记录: react native andorid 关于iOS部分可以参考vczero的lession文章 > React-Native 是Android端实现实现动态部署的另一种思路,绕过dexLoad【一些现有的Android插件框架...
models-lession.zip是一个压缩包,解压后包括目录slim,用于重新训练模型
Lession3_4.java
"C++教学视频Lession1"旨在为初学者提供一个深入理解和掌握C++基础知识的平台。本教学视频系列从基础出发,通过直观且详细的讲解,帮助学习者构建扎实的C++编程基础。 在“Lession1”中,你将首先了解C++的历史背景...
Lession2-week1.zip
在本课程"mooc_android_高仿qq登录界面设计与实现"中,我们将深入探讨如何在Android平台上构建一个类似于QQ的登录界面。这个项目旨在帮助开发者掌握Android UI设计的基本技巧,特别是通过使用RelativeLayout和...
标题 "lession1.zip" 提供的信息有限,但根据描述中的同样内容,我们可以推测这是一个教学材料或者编程课程的初级课件。这个压缩包包含了几个关键文件,这些文件名暗示了我们可能在处理一个关于C语言编程的基础教程...
【标题】"01.Origin概述_标清_LOT_origin_lession_" 涉及的知识点主要集中在"Origin"的概念上,这可能是指一个特定的IT产品或技术的起源、基础概念或者是某个学习课程的第一课。"LOT"可能是课程系列的缩写,暗示这是...
在Android平台上,开发一款视频播放器是一项常见的任务,它涉及到多媒体处理、网络通信以及用户界面设计等多个技术领域。本资源提供了“Android视频播放器”的源码,对于想要深入理解Android视频播放器开发的开发者...
在`lession_2.view`中,可能包含了如何将自定义的水滴视图整合到Android布局中的示例。这可能涉及到`LinearLayout`、`RelativeLayout`、`ConstraintLayout`等布局管理器的使用,或者自定义的`ViewGroup`。 通过...
【标题】"02.Origin窗口结构与布局_标清_LOT_origin_lession_" 指的是一个关于Origin软件的教程视频,其中“标清”意味着视频质量为标准清晰度,适合在网络带宽有限的情况下观看。LOT可能代表Learning Objectives或...
在Android开发中,单选框(Radio Button)是一种常见的用户界面元素,用于让用户在多个选项中选择一个。本文将深入探讨如何在...在lession_6的学习中,你可以深入实践这些知识,进一步提升对Android单选框的掌握。
【标题】:“Lession1”通常意味着这是一系列教程或课程的第一部分,专注于某一特定主题。在这种情况下,由于没有提供具体细节,我们可以假设“Lession1”是关于TypeScript编程语言的基础教学。 【描述】:“自述...
5. 数据组织:如何有效地组织数据,如行和列的结构,字段的定义,以及如何设置主键和外键来保持数据的完整性。 6. 安全与备份:学习如何保护数据文件免受意外丢失或损坏,以及定期备份的重要性。 7. "标清"可能指...