Android 3D游戏开发(一)
来源:互联网 发布:linux 查看绝对路径 编辑:程序博客网 时间:2024/04/30 00:54
首先我们实现了GLSurfaceView.Renderer这个接口,主要是实现3个方法:onSurfaceCreated(), onSurfaceChanged()和 onDrawFrame()。这些方法很容易理解,第一个在surface创建以后调用,第二个是在surface发生改变以后调用,例如从竖屏切换到横屏的时候,最后一个方法是当任何时候调用一个画图方法的时候。
java代码:复制代码
复制代码
我们通过glClearColor()方法为底色定义了颜色。底色是在我们能看到的所有东西的后面,所以所有在底色后面的东西都是不可见的。可以想象这种东西为浓雾,挡住了所有的东西。然后我们将要为之设置距离来show一下它怎么用的。那时候你就一定会明白它是怎么存在的了。
为了让颜色变化可见,我们必须调用glClear()以及颜色缓冲的Mask来清空buffer,然后为我们的底色使用新的底色。
为了能看到它在起作用,我们这里为MotionEvent创建一个response,使用它来改变颜色。首先在VortexRenderer中来创建一个设置颜色的函数。
java代码:
- public void setColor(float r, float g, float b) {
- _red = r;
- _green = g;
- _blue = b;
- }
下面是VortexView类中创建的方法来处理MotionEvent。
java代码:
- public boolean onTouchEvent(final MotionEvent event) {
- queueEvent(new Runnable() {
- public void run() {
- _renderer.setColor(event.getX() / getWidth(), event.getY() / getHeight(), 1.0f);
- }
- });
- return true;
- }
这个系列的第二部分是关于如何添加一个三角形并可以旋转它。
第一件事情是初始化需要显示的三角形。我们来在VortexRenderer类中添加一个方法initTriangle()。
java代码:
- // new object variables we need
- // a raw buffer to hold indices
- private ShortBuffer _indexBuffer;
- // a raw buffer to hold the vertices
- private FloatBuffer _vertexBuffer;
- private short[] _indicesArray = {0, 1, 2};
- private int _nrOfVertices = 3;
- // code snipped
- private void initTriangle() {
- // float has 4 bytes
- ByteBuffer vbb = ByteBuffer.allocateDirect(_nrOfVertices * 3 * 4);
- vbb.order(ByteOrder.nativeOrder());
- _vertexBuffer = vbb.asFloatBuffer();
- // short has 2 bytes
- ByteBuffer ibb = ByteBuffer.allocateDirect(_nrOfVertices * 2);
- ibb.order(ByteOrder.nativeOrder());
- _indexBuffer = ibb.asShortBuffer();
- float[] coords = {
- -0.5f, -0.5f, 0f, // (x1, y1, z1)
- 0.5f, -0.5f, 0f, // (x2, y2, z2)
- 0f, 0.5f, 0f // (x3, y3, z3)
- };
- _vertexBuffer.put(coords);
- _indexBuffer.put(_indicesArray);
- _vertexBuffer.position(0);
- _indexBuffer.position(0);
- }
- Android 3D游戏开发(一)
- Android 3D游戏开发(二)
- Android 3D游戏开发(三)
- android 2D游戏开发,引擎设计(一) 基本构思
- android 3D游戏开发 - 潜入理解
- android 3D游戏开发-glPushMatrix() glPopMatrix()
- android 3D游戏开发-glPushMatrix() glPopMatrix()
- 开源3D&2D游戏开发引擎之GoDot简单介绍(一)
- Android游戏开发(一)
- android 3D游戏开发 - 游戏种类名称介绍
- android 2D游戏开发
- opengl 3d游戏编程(一)
- 漫谈3D游戏引擎(一)
- HTML5 2D 游戏开发(一): Snail Bait 简介
- Java 2D 游戏引擎开发(一)
- Android 3D开发,OpenGL ES 的使用(一)
- DirectX 9.0 3D 游戏开发编程基础 学习笔记(一)
- 【连载】Unity3D ——强大的跨平台3D游戏开发工具(一)
- 使用 IMQ+HTB+iptable 统一流量控制心得
- [Ubuntu] 如何在Ubuntu11.04将PHP5.3降级到PHP5.2
- 比如你想减肥
- sed 过滤字符文本
- ACE库中ACE_Msg_Log日志对象浅论
- Android 3D游戏开发(一)
- Android 3D游戏开发(二)
- Android 3D游戏开发(三)
- 如何dump oracle 内部结构
- Spring事务配置的五种方式
- ASP.Net生成缩略图
- 广搜(这个写的最好啦)
- CSerialPort串口类最新修正版(解决关闭死锁问题)2014-01-11
- thinking in java学习笔记1——全面解读方法重载