安卓系统使用移动3D+API进行高级游戏开发(7)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
// 定义每个顶点一种颜色 static byte[] cubeColors = { (byte) 255, (byte) 0, (byte) 0, … (byte) 0, (byte) 255, (byte) 0, };
// red // green
// 作为单一的三角形面定义 static int[] indices = { 6,7,4,5,1,7,3,6,2,4,0,1,2,3 }; static int[] stripLen = { 14 };
渲染技巧
• Use layers to impose rendering order
─ Appearance包含一个层索引(整型) ─ 为所有的网格和动画定义一个全局的索引 ─ 注意: 在天空盒中不能使用Z缓冲,使用层方式
• 注意: 三角面最大长度
─ 根据需要添加简化的三角面 ─ 使用向量缓存是一个好方法
http://www.anzhuo.cc/ 安卓手机论坛
3
| 2004 JavaOneSM Conference | Session TS-2121
举例:旋转的盒子
复制原始数据到对象中
// 从数组中填充VertexArrays int numVertices = vertices.length/3; VertexArray pos = new VertexArray(numVertices, 3, 2); VertexArray col = new VertexArray(numVertices, 3, 1); pos.set(0, numVertices, cubeVertices); col.set(0, numVertices, cubeColors); // 链接VertexArrays到VertexBuffer // 注意比例是(1.0) 斜率是(0,0,0) vertices = new VertexBuffer(); vertices.setPositions(pos, 1.0f, null); vertices.setColors(col); // 填充三角面 triangles = new TriangleStripArray(cubeIndices, stripLen); // 使用默认的表现(Appearance)建立一个网格 cube = new Mesh(vertices, triangles, new Appearance());
Sprite3D
在一个三维空间中定位一个二维的图片 • 比例模式显示一个公告栏或者树木等 • 非比例模式显示字体或图标等
Sprite3D
Appearance
CompositingMode
Image2D Image2D
Fog
Βιβλιοθήκη Baidu
1
| 2004 JavaOneSM Conference | Session TS-2121
4 | 2004 JavaOneSM Conference | Session TS-2121
2
| 2004 JavaOneSM Conference | Session TS-2121
举例:旋转的盒子
定义一个盒子需要的原始数据
// 根据XYZ坐标定义一个盒子 static short[] cubeVertices = { -1, -1, 1, 1, -1, 1, -1, -1, -1, -1, 1, -1, -1, -1, }; 1, 1, 1, -1, 1, 1, 1, 1, 1, -1