Android 3D jpct-ae游戏引擎碰撞检测(类似台球碰撞)

Android 3D jpct-ae 一个场景小例子 jpct-ae 一个场景小例子,加载了一些3ds模型,并且实现了手指触摸移动,实现了上下左右键。但是,此处有两个3ds模型在最终的画面里面没有显示,程序也没有报错,不知道是为什么,这一点让我很纳闷。 源代码和3ds模型,材质图片下载地址:http://download.youkuaiyun.com/detail/itde1/4283530,模型图片在res/raw文件夹里面。 注意:1,Loader.lo 阅读详情

作为一款开源的3D游戏引擎,jpct-ae还是不错的,文档很齐全,只是相关的教程很少很少,接触这个引擎有一个多星期了,学的挺郁闷,有些3ds模型加载不进去,又找不到相关的资料,模型贴图也是一塌糊涂,导致下面的台球桌看起来一点都不像。

这款游戏引擎在国内很小众,使用的人很少,资料也很少,找了很长时间,只有http://blog.youkuaiyun.com/Simdanfeg/article/category/817423这个还不错,只可惜作者没有再继续更新了,我只好在黑暗中行走。

本来想着做一个台球游戏,现在看来任重而道远,很困难。

本文做了两个小球之间的碰撞检测,一个小球向另一个小球撞过去,模型图片放在assets文件夹里面。

源代码和模型下载地址:http://download.youkuaiyun.com/detail/itde1/4283586

代码:MainActivity.java  ,注释很详细。

package com.collsion3;

import java.io.IOException;
import java.io.InputStream;

import android.app.Activity;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Window;
import android.view.WindowManager;

/**
 * Activity类
 * 
 * @author itde1
 * 
 */
public class Jpct_Collsion3Activity extends Activity {
	private GLSurfaceView glView;
	private MyRenderer mr = new MyRenderer();
	//这里设置为public static,是因为在MyRenderer里面用到
	public static boolean up = false; // 方向上下左右
	public static boolean down = false;
	public static boolean left = false;
	public static boolean right = false;

	public void onCreate(Bundle savedInstanceState) {
		  super.onCreate(savedInstanceState);
		  //设置无标题  
	      requestWindowFeature(Window.FEATURE_NO_TITLE);  
	      //设置全屏  
	      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,   
	              WindowManager.LayoutParams.FLAG_FULLSCREEN);  
	
		  // 传入Resources方法
		  LoadFile.loadb(getResources());
		  new LoadFile(getResources());
		  glView = new GLSurfaceView(this);
		  glView.setRenderer(mr);
		  setContentView(glView);
	 }
 
	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		glView.onPause();
		}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		glView.onResume();
}

	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
}

	@Override
public boolean onKeyDown(int keyCode, KeyEvent event) { // 按键处理,当上下左右中的一个按下时,则将相应的变量置true
	switch (keyCode) {
		case KeyEvent.KEYCODE_DPAD_UP:
			up = true;
			break;
		case KeyEvent.KEYCODE_DPAD_DOWN:
			down = true;
			break;
		case KeyEvent.KEYCODE_DPAD_LEFT:
			left = true;
			break;
		case KeyEvent.KEYCODE_DPAD_RIGHT:
			right = true;
			break;
		}
		return super.onKeyDown(keyCode, event);
}

	@Override
public boolean onKeyUp(int keyCode, KeyEvent event) { //松开按键
	up = false;
	down = false;
	left = false;
	right = false;
	return super.onKeyUp(keyCode, event);
}
}
//载入文件
class LoadFile {
	public static Resources resource;
	public static Bitmap bitmap1;
	public static Bitmap bitmap2;
	public static Bitmap bitmap3;
	public LoadFile(Resources res) {
		resource = res;
	}

	// 载入模型
	public static InputStream loadf(String fileName) {
		AssetManager am = LoadFile.resource.getAssets();
		try {
			return am.open(fileName);
		} catch (IOException e) {
			return null;
		}
	}

	// 载入纹理图片
	 public static void loadb(Resources res) {
	   bitmap1 = BitmapFactory.decodeResource(res, R.drawable.table);
	   bitmap2 = BitmapFactory.decodeResource(res, R.drawable.bool1);
	   bitmap3=BitmapFactory.decodeResource(res, R.drawable.bool2);
	 }
}

 

MyRenderer.java:

package com.collsion3;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import com.threed.jpct.*;
import com.threed.jpct.Matrix;
import com.threed.jpct.util.MemoryHelper;

import android.opengl.*;
public class MyRenderer implements GLSurfaceView.Renderer{

	// FrameBuffer对象  
	 private FrameBuffer fb;  
	 // World对象  
	 private World world;  
	 // RGBColor  
	 private RGBColor back = new RGBColor(50, 50, 100);  
	 // Object3D对象  
	 private Object3D plane=null;
	 private Object3D ball1=null;
	 private Object3D ball2=null; 
  
	 // SimpleVector  
	 // 通过设置组件的x,y,z向量来创建一个SimpleVector对象  ,表示小球的运动方向和速度
	 private SimpleVector move = new SimpleVector(-4.0, 0.0, 4.0);  

	 private boolean collsion=false;//是否发生碰撞
	 private SimpleVector tem;
	  
	 // FPS  
	 private int fps = 0;  
	 private long time = System.currentTimeMillis();  
	  
	 // 默认构造  
	 // 对该项目的一些优化  
	 public MyRenderer() {  
		  // 绘制的最多的Polygon数量,默认为4096,此处如果超过500,则不绘制  
		  Config.maxPolysVisible = 500;  
		  // 最远的合适的平面,默认为1000  
		  Config.farPlane = 1500;  
		  Config.glTransparencyMul = 0.1f;  
		  Config.glTransparencyOffset = 0.1f;  
		  // 使JPCT-AE这个引擎使用顶点而不是顶点数组缓冲对象,因为它可能会使某些硬件更快  
		  // 但在Samsung Galaxy,它并不能工作的很好,可能使之崩溃,这就是它默认为false的原因  
		  Config.useVBO = true;  
		  Texture.defaultToMipmapping(true);  
		  Texture.defaultTo4bpp(true);  
	 }
	@Override
	public void onDrawFrame(GL10 gl) {
		// TODO Auto-generated method stub
		 try {  
			   if (true) {  

				move();//实现上下左右键
			    SimpleVector trsn = ball2.checkForCollisionSpherical(move, 10f);
			    //求出两个球之间距离
			    SimpleVector length=new SimpleVector(ball1.getTransformedCenter().x-ball2.getTransformedCenter().x,
			    		ball1.getTransformedCenter().y-ball2.getTransformedCenter().y,ball1.getTransformedCenter().z-ball2.getTransformedCenter().z);
			  
			    //判断两球之间距离是否小于两球半径之和,若小于,则发生碰撞
			    if(length.length()<=20+5){
			    	collsion=true;//碰撞发生
			    }
			    //如果发生碰撞
			    if(collsion){
			    	//判断小球是否已经跨越平面了
			    	if(ball2.getTranslation(tem).z<-100||ball1.getTranslation(tem).z>100){
			    		ball1.clearTranslation();
			    		ball2.clearTranslation();
			    		ball1.setVisibility(false);//球消失
			    		ball2.setVisibility(false);
			    	}
			    	else{//小球设置新的运动方向
			    	ball1.translate(new SimpleVector(1,0,3));
			    	ball2.translate(new SimpleVector(-2,0,-2));	
			    	}
			    	}
			    //或者if(!collsion)
			    //如果没有碰撞
			    else  ball2.translate(trsn);

			    SimpleVector axis=new SimpleVector(1,0,1);//球旋转时轴的方向
			    ball2.rotateAxis(axis, (float)Math.toRadians(10));//实现球旋转

			    // 以定义好的RGBColor清屏  
			    fb.clear(back);  
			    // 变换和灯光所有的多 边形  
			    world.renderScene(fb);  
			    // 绘制由renderScene产生的场景  
			    world.draw(fb);  
			    // 渲染显示图像  
			    fb.display();  
			    // fps加1  
			    fps+=1;  
			    // 打印输出fps  
			    if (System.currentTimeMillis() - time > 1000) {  
			     System.out.println(fps + "fps");  
			     fps = 0;  
			     time = System.currentTimeMillis();  
			    }  
			   } else {  
			    if (fb != null) {  
			     fb.dispose();  
			     fb = null;  
			    }  
			   }  
			  } catch (Exception e) {  
			   e.printStackTrace();  
			   // 打印异常信息  
			   Logger.log("Drawing thread terminated!", Logger.MESSAGE);  
			  }  
	}

	@Override
	public void onSurfaceChanged(GL10 gl, int width, int height) {
		// TODO Auto-generated method stub
		if (fb != null) {  
			   fb = null;  
			  }  
			  // 新产生一个FrameBuffer对象  
			  fb = new FrameBuffer(gl, width, height); 
			  
	}

	@Override
	public void onSurfaceCreated(GL10 gl, EGLConfig config) {
		// TODO Auto-generated method stub
		Logger.log("onCreate");  
		  // 混合渲染  
		  gl.glEnable(GL10.GL_BLEND);  
		  gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);  
		  // 新建world对象  
		  world = new World();  
		  // 纹理  
		  TextureManager tm = TextureManager.getInstance();  
		  Texture texture2 = new Texture(LoadFile.bitmap1); 
		  Texture texture3 = new Texture(LoadFile.bitmap2);
		  Texture texture4 = new Texture(LoadFile.bitmap3);
		  tm.addTexture("texture2", texture2);  
		  tm.addTexture("texture3", texture3); 
		  tm.addTexture("texture4",texture4);
		  // 初始化各3D元素  
//		  plane = Primitives.getPlane(20, 10); // 得到平面
		  //也可以采用上面得到平面的方法,这里采用的是加载3ds模型
		  plane=loadModel("table.3ds", 4f);
		  plane.translate(0, -30, 20);
		  plane.rotateX(-(float) Math.PI / 2); // 从jpct-ae的坐标旋转到正常坐标系
		  plane.rotateY((float)Math.PI/2);
		  ball1 = Primitives.getSphere(10); // 得到球体
		  ball1.translate(0, -39, 0);
		      
		  ball2=Primitives.getSphere(10);
		  ball2.translate(50, -39, -50);

		  //设置纹理贴图方式
		  plane.calcTextureWrap();
		  plane.setTexture("texture2");
		  ball1.calcTextureWrapSpherical();
		  ball1.setTexture("texture3");
		  ball2.calcTextureWrapSpherical();
		  ball2.setTexture("texture4");
		   
		  world.addObject(plane);
		  world.addObject(ball1);
		  world.addObject(ball2);
		  //设置碰撞模式
		  ball1.setCollisionMode(Object3D.COLLISION_CHECK_OTHERS); 
		  ball2.setCollisionMode(Object3D.COLLISION_CHECK_SELF);
		  plane.setCollisionMode(Object3D.COLLISION_CHECK_OTHERS);

		  // 设置环境光  
		  world.setAmbientLight(255, 255, 255); 
		  //这里设置光照的地方不成功,不能显示光照,不知道为什么????????????
		  //设置光照 
		  Light light=new Light(world);
		  light.setPosition(new SimpleVector(ball1.getTransformedCenter().x,
				  ball1.getTransformedCenter().y-100,ball1.getTransformedCenter().z-50));
		  light.setIntensity(255, 0, 0);
		  //以上3段代码没有效果
		  // 编译所有对象  
		  world.buildAllObjects();  
		    
		  // Camera相关  
		  Camera cam = world.getCamera();  
		  cam.setPositionToCenter(ball1);
		  cam.align(ball1);//将相机方向对着物体的Z轴正方向
		  //相机绕着X轴旋转20度
		  cam.rotateCameraX((float) Math.toRadians(20));
		  cam.moveCamera(Camera.CAMERA_MOVEOUT, 250);  
		  // 向外以移动  
		  cam.moveCamera(Camera.CAMERA_MOVEUP, 60);  
		
		  //cam.lookAt(plane.getTransformedCenter());  
		  
		  // 回收内存  
		  MemoryHelper.compact();  
		 
	}
	// 载入模型
	private Object3D loadModel(String filename, float scale) {
		// 将载入的3ds文件保存到model数组中
		Object3D[] model = Loader.load3DS(LoadFile.loadf(filename), scale);
		// 取第一个3ds文件
		Object3D o3d = new Object3D(0);
		// 临时变量temp
		Object3D temp = null;
		// 遍历model数组
		for (int i = 0; i < model.length; i++) {
			// 给temp赋予model数组中的某一个
			temp = model[i];
			// 设置temp的中心为 origin (0,0,0)
			temp.setCenter(SimpleVector.ORIGIN);
			// 沿x轴旋转坐标系到正常的坐标系(jpct-ae的坐标中的y,x是反的)
			temp.rotateX((float) (-.5 * Math.PI));
			// 使用旋转矩阵指定此对象旋转网格的原始数据
			temp.rotateMesh();
			// new 一个矩阵来作为旋转矩阵
			temp.setRotationMatrix(new Matrix());
			// 合并o3d与temp
			o3d = Object3D.mergeObjects(o3d, temp);
			// 主要是为了从桌面版JPCT到android版的移徝(桌面版此处为o3d.build())
			o3d.compile();
		}
		// 返回o3d对象
		return o3d;
	}
	
	public void move() { 
		Camera cam=world.getCamera();
		if (Jpct_Collsion3Activity.up) { // 按向上方向键
			cam.moveCamera(cam.getDirection(), -2);//摄像机向里面移动
		}
		if (Jpct_Collsion3Activity.down) {
			cam.moveCamera(cam.getDirection(), 2);//向外移动
		}
		if (Jpct_Collsion3Activity.left) {
			plane.rotateY((float) Math.toRadians(-10));// 向左旋转
		}
		if (Jpct_Collsion3Activity.right) {
			plane.rotateY((float) Math.toRadians(10)); // 向右旋转
		}
	
	}
}

运行截图,碰撞前:


碰撞时:


Android游戏引擎汇总,架构师花费近一年时间整理出来的安卓核心知识 目前版本中还不支持Android x86 游戏例子:https://market.android.com/details?id=com.ArtInGames.AirAttackHDLite Cocos2D - http://www.cocos2d-x.org/projects/cocos2d-x 可移植到C++语言,流行的iPhone开发引擎 支持Android, iPhone, Win32的2D游戏引擎 基于C++的引擎支持x86的Android设备 完整源代码的免费引擎 游戏例子: https://ma 阅读详情

相关推荐

Android游戏引擎汇总

支持iOS, Android, BlackBerry PlayBook OS, bada, Windows Desktop, Mac OS, WindowsPhone 8的跨平台人3D C++游戏引擎。支持Windows, Mac OS, Linux, iPhone, Android, Palm, Wii, iPad, BlackBerry系统。DirectX 9,10,11, OpenGL, OpenGL ES 2.0, PhysX 3, PhysX 2, Bullet 物理引擎整合。

2501_90250883的博客 798

关于jpct_ae使用踩坑

目前安卓ios上的商城项目非常多,而体验来体验去,商品的展示无非就是图片,毫无新意可言, 如果将商品通过3d模型展示出来,那绝对让人耳目一新 本人最近在研究关于android上展示3d模型一些方案,通过对比,最终选择了jpct这款。本文不会对具体的集成做具体介绍,因为官网上的demo已经能够很清晰的将模型展示出来。本文仅仅记录自己在集成过程中所遇到的问题: 1, jpct支持多种格式

jianjiankedizai的博客 3294

使用JPCT-AE构建逼真的Android 3D桌子

在这一章节中,我们将介绍JPCT-AE引擎,一种专为Android平台设计的高性能3D图形渲染引擎。JPCT-AE引擎允许开发者利用强大的OpenGL ES技术,像在桌面环境中那样进行3D应用和游戏的开发。其独特的功能和优化手段提供了与桌面级3D渲染技术相近的体验和能力,为Android平台上的3D开发带来了无限可能。

weixin_33256096的博客 750

JPCT-AE for Android 3D (一)----------Hello World创建自己的立方体

了解JPCT-AE       JPCT是一款基于OpenGL技术开发的3D图形引擎(PC环境为标准OpenGL,Android为OpenGL ES), 以Java语言为基础的,拥有功能强大的Java 3D解决方案。该引擎与LGame(此为2D游戏引擎)相类似,目前拥有PC(J2SE)以及Android两个开发版本。jPCT-AE 是 jPCT 在 Android 平台上的移植版本。

LeoY的专栏 7457

jpct-ae.zip_JPCT_jPCT-AE开发文档_jpct-ae

jpct-ae文档、jar包、例子、等内容

QT实现Word读写

在windows环境下,我们可以通过ActiveQt实现Office自动化,相当于VB的VBA功能。 以下是一个实例: #include #include #include int main(int argc, char *argv[]) {     QApplication a(argc, argv);     //显示的打开一个word应用程序     QAxW

nameofhsw的专栏 1万+

android jpct ae教程,android OpenGL开发使用JPCT-AE引擎显示3D立方体

在了解JPCT之前得了解什么是opengl,opengl是一个跨语言,跨平台的3D图形编程接口,OpenGL ES (OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。而JPCT则是java的一款3D图形引擎,封装了opengl,jPCT-AE是jPCT在android平台上的移植版本。用opengl...

weixin_32165903的博客 1143

Win10下Delphi 10.4.2 (RAD Studio 10.4.2 )安装教程图解

Win10下Delphi 10.4.2 (RAD Studio 10.4.2 )安装和破解教程图解

1万+

jpct-ae开发3D赛车游戏

jpct-ae游戏引擎的资料比较少,本人是在官网中helloworld程序的基础上进行编写的。   首先,先说一下游戏的框架模块。游戏包括渲染模块(场景渲染、赛车渲染和效果渲染)、游戏逻辑模块(碰撞检测和重力感应计算)、音效模块和数据模块四部分。在JPCT-AE游戏引擎的基础上,通过将3DMAX制作的赛道和赛车模型文件导入到游戏中,同时添加碰撞渲染效果,完成游戏的渲染模块;通过保持赛车位置不...

木南 508

第零章 序 Chisel教程汇总

笔者目前西安交通大学微电子硕士在读,研究方向为数字集成电路设计与体系结构。鉴于目前RISC-V的火热程度,笔者参与了课题组的RISC-V项目,并了解、学习了颇受关注的新型硬件构建语言——Chisel,当前参与的神经网络加速器设计便是使用Chisel开发的。这是一门敏捷开发语言,据称要比传统的Verilog语言快很多。在亲身使用过后,笔者发现确实快了不少。这主要得益于Scala作为高级语言的简洁风格...

qq_34291505的博客 7万+

激光SLAM算法性能对比:在Ubuntu20.04上实测Point-LIO/FAST_LIO2/Faster-LIO的运行效果

本文在Ubuntu 20.04平台上对Point-LIO、FAST-LIO2和Faster-LIO三款激光SLAM算法进行了深度实测与性能对比。通过量化分析绝对轨迹误差、CPU/内存占用及单帧处理延迟等核心指标,结合室内外场景数据,为高精度测绘、服务机器人及自动驾驶等不同应用场景提供了清晰的选型指南和实战调优建议。

weixin_28335283的博客 368

Android 开源3D游戏引擎汇总

Android 开源3D游戏引擎汇总【转】 1. jPCT-AE 介绍:jPCT支持Android版本。 网址:http://www.jpct.net/jpct-ae/ 2. kwwaak3 介绍:Quake 3移植到Android平台的手机 特性:声音、网络、OpenGL 3D渲染 网址:http://code.google.com/p/kwaak3/ 3

同一个世界,同一片天。 2034

七天征服AutoSAR/SomeIP_04理解SoAD_LdCom_SD模块

本文深入解析了AUTOSAR平台下SOME/IP协议栈的架构设计与模块交互逻辑。重点剖析了SD模块(服务发现)和LdCom模块(通信适配层)与SoAD(Socket适配层)之间的复杂关联关系。文章通过详细配置表格和代码示例,阐述了服务注册发现机制、PDU路由控制策略、数据收发流程等核心功能,并形象地将三模块关系类比为"三极管结构"。特别强调了SD模块通过RoutingGroup实现通信路径的动态开关控制,以及LdCom模块在协议栈中的透传转发作用,帮助开发者理解配置规则背后的底层原理,提

大叔带刺的博客 194

Android 3D游戏开发引擎的评价和下载地址

LTLite Engine 是一个基于OpenGL ES的轻量级2D/3D游戏引擎,用C/C++实现, Android游戏开发者可以在windows下用cygwin+NDK+SDK环境,采用C++/C代码编写出的游戏运行效率高,引擎包含2D/3D的库,既可以单独使用2D库也可以2D/3D都使用。开发出来的游戏生成单独的so文件,java层的东西基本不用动,只需要拿例子里提供的代码即可使用,开发者不

antoineyuan的专栏 1009

prplOS适配USB LAN网卡

本文介绍了将USB LAN网卡(如rndis0)适配到prplOS的LAN管理流程。

四儿家的小祖宗的博客 322

【python爬虫--爬取电商商品及对其销量、好差评等数据进行分析】Python爬虫爬取电商商品及大数据分析-实战

选择目标电商网站:这里选择爬取两个不同电商网站(比如京东、淘宝)上的商品数据,包括商品名称、价格、销量和评价信息。编写爬虫:通过爬虫获取商品信息并保存数据。数据清洗与对齐:将两个电商网站抓取到的数据进行统一清洗和对齐。数据分析:进行销量分析、好评与差评分析等。

Dreams°的博客 4011

Android 3D引擎汇总

Android 开源3D游戏引擎汇总【转】 1. jPCT-AE 介绍:jPCT支持Android版本。 网址:http://www.jpct.net/jpct-ae/ 2. kwwaak3 介绍:Quake 3移植到Android平台的手机 特性:声音、网络、OpenGL 3D渲染 网址:http://code.google.com/p/kwaak3/ 3. Gamin...

gxrocky的专栏 455

【GameFramework框架内置模块】15、场景(Scene)

场景(Scene)模块,提供场景管理的功能,负责场景的加载、卸载、切换和管理。可以方便地管理不同场景之间的切换以及不同场景之间的信息传递。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1883

android游戏引擎汇总

随着Android系统的使用越来越广泛,了解一下Android平台下的游戏引擎就非常有必要。而同时因为基于Intel x86的移动设备越来越多,我也非常关注支持x86的移动游戏引擎。然而就目前为止游戏引擎的数量已经非常之多,每个引擎都有不同的特征、价格、成熟度等。通过一些调研之后,我发现有非常多的游戏引擎可用于开发运行在android移动设备端的游戏,其中有些还支持x86系统,另外还有些通过简单的

混魔MJM的博客 8691

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

十五开源的Andr​​oid(2D或3D)Android开发游戏引擎

Android游戏开发Android游戏引擎是非常有用的,这里是10个开源的Andr​​oid(2D或3D)Android开发的游戏引擎。 1。  Rokon:Android的开源2D游戏引擎 Rokon是一个开源,广泛,强大和灵活的2D游戏引擎,为Android。rokon已经改写从地上爬起来。还有更多的功能集成,和未来的承诺了很多东西。例子,教程和文档将遵循这个版本。rokon是一个开

鹿鸣天涯 3901

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Android 平台开源3D游戏引擎列表

1. jPCT-AE介绍:jPCT支持Android版本。网址:http://www.jpct.net/jpct-ae/2. kwwaak3介绍:Quake 3移植到Android平台的手机特性:声音、网络、OpenGL 3D渲染网址:http://code.google.com/p/kwaak3/3. Gamine介绍:个人开发的开源3D游戏引擎特性:场景创建、光照、纹理、物理的rigid b...

weixin_33937778的博客 175

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

几款可移植的游戏引擎介绍

随着android在全球的风靡,越来越多的人将自己的目光投向搭载android的移动设备,但由于手持设备的局限性,怎样利用有限的资源来达到很好的体验,是设备厂商必须要考虑的问题,其中炫目的界面就是可以增加用户体验的一种方式。这其中,3D效果无疑是对用户最具吸引力和说服力的。而3D引擎可以大大节省开发3D的成本,所以做了一次调查,此次调查的引擎必须满足以下: 开源:便于更改代码,优化性能,且免

poem_of_sunshine的专栏 906

Android 3D引擎推荐

============问题描述============ 最近接到一个项目需要使用3D引擎,请教下Android平台下哪个3D游戏引擎比较好啊,最好是开源的,资料比较多的。 ============解决...

weixin_30698527的博客 383
上一篇: Android 3D jpct-ae 一个场景小例子
下一篇: JPCT-AE画的一个桌子(Android 3D)
itde1
博客等级 码龄16年 16粉丝 26原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值