本文摘要:此示例展出了一个立方体的明确构建过程,与之前的纯Opengles构建比起,它使用了JPCT-AE来构建,因为个人指出这个框架很便利,于是从今天开始通过其网站上的Wiki来讲解JPCT-AE的构建。
此示例展出了一个立方体的明确构建过程,与之前的纯Opengles构建比起,它使用了JPCT-AE来构建,因为个人指出这个框架很便利,于是从今天开始通过其网站上的Wiki来讲解JPCT-AE的构建。通过这个示例能让你较慢理解JPCT-AE的协助文档,也就是入门。(1)什么是JPCT:一种PCB了OPENGLes的3D游戏引擎,有j2se与android两个版本。
(2)如何取得其jar包及协助文档:.threed.jpct.example;importjava.lang.reflect.Field;importjavax.microedition.khronos.egl.EGL10;importjavax.microedition.khronos.egl.EGLConfig;importjavax.microedition.khronos.egl.EGLDisplay;importjavax.microedition.khronos.opengles.GL10;importandroid.app.Activity;importandroid.opengl.GLSurfaceView;importandroid.os.Bundle;importandroid.view.MotionEvent;importcom.threed.jpct.Camera;importcom.threed.jpct.FrameBuffer;importcom.threed.jpct.Light;importcom.threed.jpct.Logger;importcom.threed.jpct.Object3D;importcom.threed.jpct.Primitives;importcom.threed.jpct.RGBColor;importcom.threed.jpct.SimpleVector;importcom.threed.jpct.Texture;importcom.threed.jpct.TextureManager;importcom.threed.jpct.World;importcom.threed.jpct.util.BitmapHelper;importcom.threed.jpct.util.MemoryHelper;/***一个非常简单的例子。相比展出如何写出一个准确的android应用于它更加着重于展出如何用于JPCT-AE这个3D游戏框架。
*它包括了Activity类去处置pause和resume等方法**@authorEgonOlsen**/publicclassHelloWorldextendsActivity{//HelloWorld对象用来处置Activity的onPause和onResume方法privatestaticHelloWorldmaster=null;//GLSurfaceView对象privateGLSurfaceViewmGLView;//类MyRenderer对象privateMyRendererrenderer=null;//当JPCT图形背景时FrameBuffer类获取了一个缓冲器,它的结果本质上是一个能表明或者改动甚至能展开更加多后处理的图片。privateFrameBufferfb=null;//World类是JPCT时最重要的一个类,它样子胶水一样把事物硬一起。它包括的对象和光线定义了JPCT的场景privateWorldworld=null;//类似于java.awt.*中的Color类privateRGBColorback=newRGBColor(50,50,100);privatefloattouchTurn=0;privatefloattouchTurnUp=0;privatefloatxpos=-1;privatefloatypos=-1;//Object3D类是一个三维对象,千万不要屌呼呼的指出它与java.lang.Object类似于。//一个Object3D对象作为一个实例被加到到在图形的World对象中。
Object3D在World//中一次加到一个实例,他们有可能被联系起作为孩子/父母来在他们中创建一个制度.//人体模型当然也能应用于在以上的规则中。他们经常不添加一个World实例中,而是//初始化到其它对象中(人体模型或非人体模型)。有些方法在这个类中必须一个实例//加到到一个World实例中(用World.addObject()方法可以构建)。
privateObject3Dcube=null;//每秒帧数privateintfps=0;//光照类privateLightsun=null;protectedvoidonCreate(BundlesavedInstanceState){//Logger类中jPCT中一个普通的用作打印机和存储消息,错误和警告的日志类。//每一个JPCT分解的消息将被重新加入到这个类的队列中Logger.log(onCreate);//如果本类对象不为NULL,将从Object中所有属性取出该类if(master!=null){copy(master);}super.onCreate(savedInstanceState);//实例化GLSurfaceViewmGLView=newGLSurfaceView(this);//用于自己构建的EGLConfigChooser,该构建必需在setRenderer(renderer)之前//如果没setEGLConfigChooser方法被调用,则配置文件情况下,视图将自由选择一个与当前android.view.Surface相容最少16位深度缓冲器深度EGLConfig。
mGLView.setEGLConfigChooser(newGLSurfaceView.EGLConfigChooser(){publicEGLConfigchooseConfig(EGL10egl,EGLDisplaydisplay){//Ensurethatwegeta16bitframebuffer.Otherwise,we''''''''''''''''''''''''''''''''llfall//backtoPixelflingeronsomedevice(read:SamsungI7500)int[]attributes=newint[]{EGL10.EGL_DEPTH_SIZE,16,EGL10.EGL_NONE};EGLConfig[]configs=newEGLConfig[1];int[]result=newint[1];egl.eglChooseConfig(display,attributes,configs,1,result);returnconfigs[0];}});//实例化MyRendererrenderer=newMyRenderer();//设置View的RenderMan,同时启动线程调用图形,以至启动图形mGLView.。
本文来源:彩神Vll-www.tongguang.net