最新版本:Android高级进阶十二 在Android上使用3D 引擎(JPCT-AE)构建立方体
上面好多文章都是介绍使用Android原生opengl接口的,使用起来很是麻烦,代码量冗余臃肿,所以walfred设想是否有几款封装好了的“新引擎”,当然还最好是开源的,在Android 开源3D游戏引擎调研一 中,我们找到了不少优秀的引擎,今天我们就开始使用JPCT-AE,并且做一个使用JPCT-AE构建立方体的实例,算是入门篇,这个虽然比较简单好用,但是我还是建议你先看完基本的opengl操作,之后再使用JPCT-AE就如鱼得水了。
这个例子的效果图如下:
因为已经假设你有一些opengl操作,我这边把所有的代码都加上了注释,所以看起来是很方便的。
Java代码
- package org.ourunix.android.jpctcube;
- import java.lang.reflect.Field;
- import javax.microedition.khronos.egl.EGLConfig;
- import javax.microedition.khronos.opengles.GL10;
- import com.threed.jpct.Camera;
- import com.threed.jpct.FrameBuffer;
- import com.threed.jpct.Light;
- import com.threed.jpct.Logger;
- import com.threed.jpct.Object3D;
- import com.threed.jpct.Primitives;
- import com.threed.jpct.RGBColor;
- import com.threed.jpct.SimpleVector;
- import com.threed.jpct.Texture;
- import com.threed.jpct.TextureManager;
- import com.threed.jpct.World;
- import com.threed.jpct.util.MemoryHelper;
- import android.app.Activity;
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.opengl.GLSurfaceView;
- import android.opengl.GLSurfaceView.Renderer;
- import android.os.Bundle;
- import android.view.MotionEvent;
- public class JPCTCubeActivity extends Activity {
- /** Called when the activity is first created. */
- private Context mContext;
- // 这是和一般的opengl一样,定义一个glview
- GLSurfaceView mGLSurfaceView;
- // 这是和一般的opengl一样,定义一个渲染类mGlRenderer
- GlRenderer mGlRenderer;
- private static JPCTCubeActivity master;
- // 当JPCT渲染背景时FrameBuffer类提供了一个缓冲,它的结果本质上是一个能显示或者修改甚至能进行更多后处理的图片。
- private FrameBuffer fb;
- // World类是JPCT时最重要的一个类,它好像胶水一样把事物"粘"起来。它包含的对象和光线定义了JPCT的场景
- private World world;
- // 类似java.awt.*中的Color类
- private RGBColor backColor = new RGBColor(50, 50, 100);
- private float rotateX = 0;
- private float rotateY = 0;
- //x轴方向坐标
- private float xpos = -1;
- //y轴方向坐标
- private float ypos = -1;
- // Object3D类是一个三维对象,千万不要傻呼呼的认为它与java.lang.Object类似。
- // 一个Object3D对象作为一个实例被添加到在渲染的World对象中。Object3D在World
- // 中一次添加一个实例 ,他们可能被联系起作为孩子/父母来在他们中建立一个制度.