原文链接:http://blog.csdn.net/cng1991/article/details/7293946
今天看了下libgdx,觉得加载3d模型的功能很炫。所以分享下代码。
首先用blender(开源的3D模型工具,百度即可搜到)新建一个工程,然后导出为cube.obj。最主要的是获取obj文件。将.obj文件放在android工程的assets/data目录下。然后搭建android下的libgdx环境,即导入架包。
然后编写代码:
package com.cng;
import android.os.Bundle;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Mesh;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.graphics.g3d.loaders.ModelLoaderOld;
import com.badlogic.gdx.utils.ScreenUtils;
public class MyGameActivity extends AndroidApplication {
class MyGameListen implements ApplicationListener
{
SpriteBatch batch;
Texture texture;
TextureRegion fbteRegion;
BitmapFont font;
PerspectiveCamera camera;
Mesh mesh;
Color clearColor=new Color(0.2f, 0.2f, 0.2f, 1);
float angle;
@Override
public void create()
{
mesh=ModelLoaderOld.loadObj(Gdx.files.internal("data/cube.obj").read());
texture=new Texture(Gdx.files.internal("data/badlogic.jpg"),true);
texture.setFilter(TextureFilter.MipMap, TextureFilter.Linear);
batch=new SpriteBatch();
font=new BitmapFont();
camera=new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
camera.position.set(3, 3, 3);
camera.direction.set(-1, -1, -1);
}
@Override
public void dispose()
{
}
@Override
public void pause()
{
}
@Override
public void render()
{
GL10 gl=Gdx.graphics.getGL10();
gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
gl.glClearColor(clearColor.r, clearColor.g, clearColor.b, clearColor.a);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT);
gl.glEnable(GL10.GL_DEPTH_TEST);
gl.glEnable(GL10.GL_TEXTURE_2D);
camera.update();
camera.apply(gl);
angle+=45*Gdx.graphics.getDeltaTime();
gl.glPushMatrix();
gl.glRotatef(angle, 1, 0, 0);
texture.bind();
mesh.render(GL10.GL_TRIANGLES);
gl.glPopMatrix();
if(fbteRegion==null||Gdx.input.justTouched())
{
if(fbteRegion!=null) fbteRegion.getTexture().dispose();
fbteRegion=ScreenUtils.getFrameBufferTexture();
}
batch.begin();
if(fbteRegion!=null)
{
batch.draw(fbteRegion, 0, 0, 100, 100);
}
batch.end();
}
@Override
public void resize(int arg0, int arg1)
{
}
@Override
public void resume()
{
}
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
initialize(new MyGameListen(), false);
}
}
因为我是libgdx的初学者,里面有些代码不能解释,所以就先不解释了,只是提供一个例子。
效果图如下:
估计91助手的屏幕截图有点问题,这正方体看起来有点弯曲,但实际就是一个四四方方的正方体,并在旋转。
分享到:
相关推荐
libgdx 资源加载器
android平台使用libgdx库 解析obj文件。
Libgdx实现异步加载网络图片并保存到SD卡或者data/data目录下边,当本地有图片的时候,直接从本地读取图片,如果本地没有图片,将从服务器异步加载图片
javame框架移植到libgdx。由于libgdx采用笛卡尔坐标系,所以要处理下图片的转向。
Building a 3D Game with LibGDX Paperback – August 29, 2016 by Sebastian Di Giuseppe (Author), Andreas Kruhlmann (Author), Elmar van Rijnswou (Author) Key Features Implement an exhaustive list of ...
libgdx之TTF字库的使用
Building a 3D Game with LibGDX
在网上搜罗到一个读取gif文件并创建Animation对象的代码,亲测能用,并写了个gif的加载类(能用但有些地方仍需修改)。
libgdx 下的字体资源文件包含多个使用方便埃及覅就安吉
libgdx 配置文件
Libgdx开发丛书之 Learning LibGDX Game Development, 2nd Edition
libgdx之演员与演出
NataLib 来自XML的LibGDX UI加载...如果要使用已加载的UI层的本地化,则需要将本地化文件加载到NataLocalization类的对象中 if(!NataLocalization.getInstance().LoadFromInternalXML(localizationName,"localizatio
1.LibGdx官网下载的资源 2.使用Stduio2.2,Gradle1.14.1编译 3.展示LibGdx的2D/3D等方面的基本功能使用 4.由于上床下下限制,上传网盘地址,大小175M
下载后将libs中的gdx.jar,gdx-backend-android.jar,spine-libgdx.jar包放入androidstudio或elipse的libs下,将armeabi中的so放入jini目录下.支持使用libgdx使用spinne。
[Packt Publishing] Libgdx 游戏开发学习手册 (英文版) [Packt Publishing] Learning Libgdx Game Development (E-Book) ☆ 图书概要:☆ Walk through a complete game development cycle with practical ...
libgdx-1.6.1版本的压缩文件
android游戏源码 libgdx引擎
libGDX3DTest 一些使用 libgdx 的 3D 测试感谢提供 libGDX 3D 教程!
libgdx FileTest.zip FileHandler