- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android开发学习教程—Android3D游戏教程第五部分.doc
程序更新与Android2.0.1兼容。
如果你是初次接触这个系列文章,请先阅读第一部分。
这个系列的第五部分将讲述如何创建一个3D的物体。本实例中是一个具有四个面的三角锥。
为了使我们今后的开发更简单,需要做一些准备。我们需要能够动态地计算缓冲区大小和创建数组。
private int _nrOfVertices = 0;
private void initTriangle() {
float[] coords = {
// 坐标
};
_nrOfVertices = coords.length;
float[] colors = {
// 颜色
};
short[] indices = new short[] {
// 索引
};
// float has 4 bytes, coordinate * 4 bytes
ByteBuffer vbb = ByteBuffer.allocateDirect(coords.length * 4);
vbb.order(ByteOrder.nativeOrder());
_vertexBuffer = vbb.asFloatBuffer();
// short has 2 bytes, indices * 2 bytes
ByteBuffer ibb = ByteBuffer.allocateDirect(indices.length * 2);
ibb.order(ByteOrder.nativeOrder());
_indexBuffer = ibb.asShortBuffer();
// float has 4 bytes, colors (RGBA) * 4 bytes
ByteBuffer cbb = ByteBuffer.allocateDirect(colors.length * 4);
cbb.order(ByteOrder.nativeOrder());
_colorBuffer = cbb.asFloatBuffer();
_vertexBuffer.put(coords);
_indexBuffer.put(indices);
_colorBuffer.put(colors);
_vertexBuffer.position(0);
_indexBuffer.position(0);
_colorBuffer.position(0);
}
为了更动态一些,我们需要改变一些变量:
在第一行可以看到我们给_nrOfVertices的初值为0因为它的值取决于第七行坐标数组的大小。另外我们将成员变量_indiceArray改为局部变量,该局部变量叫做indices,在第十三行初始化。
缓冲区的创建移到了坐标数组,颜色数组和索引数组下面,因为缓冲区的大小依赖于这些数组的大小。请阅读相关的第17~18行,第22~23行,第27~28行,在注释中我解释清楚了其中的数学表示含义。
这样修改的好处是,我们可以创建更多的顶点而不必手动来修改关于顶点数量,数组和缓冲区大小等值。
下一步,你必须理解OpenGL是如何绘制我们所看到的图形的。OpenGL ES相比OpenGL的一个缺陷就是它只支持三角形。因此为了创建多边形我们必须由三角形来搭建。
下面我将引用来自IPhone developer的一篇博客,同时也要推荐他的OpenGL ES series相关文章。
有一些关于绘制三角形的事情我们必须了解。在OpenGL中,有一个围绕(winding)的概念,即点被绘制的顺序是重要的。不像真实世界中的物体,OpenGL中的多边形没有两个面。他们只有一个面,即前面,如果一个三角形可以被看到的话,那么它的前面应该面对着观察者。虽然使得OpenGL能够将多边形看作是双面的是可能的,但是默认情况下,三角形只有一个可以被观察到的面。通过了解多边形的哪一面是可以被观察到的,OpenGL就可以只做一半的计算量就将多边形绘制出来。
虽然许多情况下多边形是独立的,你可能希望能够绘制它的背面。通常情况下三角形是一个物体的一部分,三角形的一面将面对这物体的内部并且这一面不会被观察到。这个不需要绘制的面就可以称之为背面,OpenGL通过绘制这个图形的点的顺序来判断哪一面是前面哪一面是背面。如果绘制图形的点的顺序是逆时针的,那么这个面就是朝外的面(可以修改)。既然OpenGL可以容易的决定哪个三角形是可以被观察到的,
您可能关注的文档
- 64位操作系统安装SQL2000SP4详细教程[已测试WIN72008R2].doc
- 66种134款卫星电视接收的盲扫方法.doc
- 6CT科设备管理维修保养制度201210.doc
- 6S管理总结报告(定稿)02.doc
- 6—10英语答案.doc
- 6层砖混住宅楼造价分析表..doc
- 6年级复习资料整理.doc
- 6月11日黑凤鸡饲养管理技术.doc
- 6活载分布的不均匀系数.doc
- 6种不可不懂的室内人像摄影布光技巧.docx
- 人教新目标版英语九年级 中考模拟学情评估(三)(含答案).pdf
- 上海市风华中学2024-2025学年高三上学期9月阶段测试英语试题(无答案).pdf
- 统编版2024-2025学年语文六年级上册期末检测卷(有答案).pdf
- 人教新目标版英语九年级第二学期全册学情评估(含答案).pdf
- 内蒙古自治区巴彦淖尔市杭锦后旗第六中学2024-2025学年八年级上学期阶段性测试历史试题(解析版).pdf
- 湖南省娄底市涟源市部分学校2024-2025学年高一上学期9月月考语文试题 Word版无答案.pdf
- 湖南省衡阳市常宁市2023-2024学年七年级上学期期末考试英语试题.pdf
- 湖南省娄底市涟源市部分学校2024-2025学年高一上学期9月月考语文试题 Word版含解析.pdf
- 江苏省泰州市姜堰区城西实验学校2024-2025学年部编版九年级上学期月考历史试卷(原卷版).pdf
- 内蒙古伊金霍洛旗2022-2023学年七年级上学期期末考试英语试题.pdf
最近下载
- 2024年社会工作者《中级法规与政策》数字型考点.pdf VIP
- 竺乾威、朱春奎、李瑞昌:《公共管理导论》 第三章 组织.pptx VIP
- 建筑工程图集 B16G101-1:中英文双语版16G101-1.pdf VIP
- 图集规范-05N6井盖标准图集.pdf
- 室外消防钢结构楼梯拆除方案.pdf
- (精选施工方案)0141 民航总局办公楼加固整修工程.doc VIP
- 统编版小学语文四年级上册第三单元 观察 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx
- 有关青岛市新建住宅质量保修手册.doc
- 同课异构省一等奖《同底数幂的乘法》教案 (省一等奖) .doc
- 连云港市新海高级中学2023-2024学年高一上学期10月月考数学试题(解析版).docx VIP
文档评论(0)