android 3D 游戏实现之First Step

该博客介绍了如何使用JPCT-AE,一个封装了OpenGL ES的3D游戏引擎,在Android上实现3D游戏。内容包括JPCT的简介、获取资源的方式以及通过一个立方体示例展示其基本用法,帮助读者快速入门。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此示例展示了一个立方体的具体实现过程,与之前的纯Opengl es实现相比,它采用了JPCT-AE来实现,因为个人认为这个框架很方便,于是从今天开始通过其网站上的Wiki来介绍JPCT-AE的实现。通过这个示例能让你快速了解JPCT-AE的帮助文档,也就是入门。

 

(1)什么是JPCT:一种封装了OPENGL es的3D游戏引擎,有j2se与android两个版本。

(2)如何获得其jar包及帮助文档:http://download.youkuaiyun.com/user/Simdanfeg处下载


第一个示例:同样的立方体,不同的实现

 

package com.threed.jpct.example;

import java.lang.reflect.Field;

import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.egl.EGLDisplay;
import javax.microedition.khronos.opengles.GL10;

import android.app.Activity;
import android.opengl.GLSurfaceView;
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.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.BitmapHelper;
import com.threed.jpct.util.MemoryHelper;

/**
 * 一个简单的例子。比起展示如何写一个正确的android应用它更着重于展示如何使用JPCT-AE这个3D游戏框架。
 * 它包含了Activity类去处理pause和resume等方法
 * 
 * @author EgonOlsen
 * 
 */
public class HelloWorld extends Activity {

    // HelloWorld对象用来处理Activity的onPause和onResume方法
    private static HelloWorld master = null;

    // GLSurfaceView对象
    private GLSurfaceView mGLView;

    // 类MyRenderer对象
    private MyRenderer renderer = null;

    // 当JPCT渲染背景时FrameBuffer类提供了一个缓冲,它的结果本质上是一个能显示或者修改甚至能进行更多后处理的图片。
    private FrameBuffer fb = null;

    // World类是JPCT时最重要的一个类,它好像胶水一样把事物"粘"起来。它包含的对象和光线定义了JPCT的场景
    private World world = null;

    // 类似java.awt.*中的Color类
    private RGBColor back = new RGBColor(50, 50, 100);

    private float touchTurn = 0;
    private float touchTurnUp = 0;

    private float xpos = -1;
    private float ypos = -1;

    // Object3D类是一个三维对象,千万不要傻呼呼的认为它与java.lang.Object类似。
    // 一个Object3D对象作为一个实例被添加到在渲染的World对象中。Object3D在World
    // 中一次添加一个实例 ,他们可能被联系起作为孩子/父母来在他们中建立一个制度.
    // 人体模型当然也能应用在以上的规则中。他们常常不加到一个World实例中,而是
    // 绑定到其它对象中(人体模型或非人体模型)。有些方法 在这个类中需要一个实例
    // 添加到一个World实例中(用World.addObject()方法可以实现)。
    private Object3D cube = null;

    // 每秒帧数
    private int fps = 0;

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值