在了解JPCT之前得了解什么是opengl,opengl是一个跨语言,跨平台的3D图形编程接口,OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。而JPCT则是java的一款3D图形引擎,封装了opengl,jPCT-AE是jPCT在android平台上的移植版本。
用opengl的框架(或者叫做引擎)来进行android开发会比使用原本的opengl es方便许多,所以下文就参照JPCT-AE的一个官方Demo小例子进行修改,在手机上显示一个带贴图的3D模型。
效果图
JPCT-AE引擎压缩包百度云链接: https://pan.baidu.com/s/1o8jyqJg 密码: ehpu,下载完解压后将lib目录下的jpct_ae.jar文件引入android studio即可。
接下来就是按照正常的android opengl编程思路,使用GLSurfaceview来进行3D物体的展示,分别重写onSurfaceCreated,onDrawFrame,onSurfaceChanged方法。
具体代码和注释如下
import android.graphics.Bitmap;
import android.opengl.GLSurfaceView;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import com.threed.jpct.Camera;
import com.threed.jpct.FrameBuffer;
import com.threed.jpct.Light;
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.BitmapHelper;
import com.threed.jpct.util.MemoryHelper;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
public class MainActivity extends AppCompatActivity {
//GLSurfaceView,负责OpenGL渲染
private GLSurfaceView mGLSurfaceView;
//自定义Renderer类(渲染器)
private GlRenderer mRenderer ;
//jpct_ae中的3D物体
private Object3D cube = null;
//位置
private float xpos = -