网上可以搜索到很多的引擎,通过jpct—ae的引擎可以很快的解决问题,具体的代码可以参考官方的demo。
几天前写的很简陋,现在补上我学到的一些内容
class MyRenderer implements GLSurfaceView.Renderer{
……
}这是一个render的继承,是要完成渲染绘图的工作
public void onDrawFrame(GL10 gl) 将缓存中的内容画出的函数
public void onSurfaceChanged(GL10 gl, int w, int h) 界面变化时候的函数
public void onSurfaceCreated(GL10 gl, EGLConfig config) 这个是在创建的时候要执行的函数,是非常重要的
TextureManager.getInstance().flush();
先将texure管理器重的缓存清空
world = new World();
建立新的世界
Resources res = getResources();
得到资源文件
TextureManager tm = TextureManager.getInstance(); Texture manp = new Texture(res.openRawResource(R.raw.manp));
从raw文件中读取manp(自己复制过去的文件)到texture
private Object3D plane = null;
建立一个Object3D的实体
plane = Loader.load3DS(res.openRawResource(R.raw.plane), 5)[0];
导入raw文件的plane中的第0个元素,可以用数组导入多个元素
plane.setTexture(name);
在palne的表面加载贴图
world.addObject(plane);加载plane到世界中
world.buildAllObjects();建立所有的对象
sun = new Light(world);建立灯光
Camera cam = world.getCamera();
cam.moveCamera(Camera.CAMERA_MOVEOUT, 250);
cam.moveCamera(Camera.CAMERA_MOVEUP, 100);
建立调整camera的位置
sun.setIntensity(250, 250, 250);光照强度
SimpleVector sv = new SimpleVector();
//sv.set(plane.getTransformedCenter());
sv.y -= 500;
sv.x -= 100;
sv.z += 200;
sun.setPosition(sv);光照位置
fb.clear();
world.renderScene(fb);
world.draw(fb);
//blitNumber(lfps, 5, 5);
fb.display();
fb是framebuffer也就是帧缓存中的东西,先清空,再将world渲染到fb中,最后display出来
还有在demo中的keyup keydown等几个函数比较简单
上面是最基本的一些东东,还有一些材质的以后看懂再写