参考教程地址:http://blog.xoppa.com/basic-3d-using-libgdx-2/
1. 创建项目
2. 代码
1 package com.mygdx.game; 2 3 import com.badlogic.gdx.ApplicationAdapter; 4 import com.badlogic.gdx.Gdx; 5 import com.badlogic.gdx.graphics.*; 6 import com.badlogic.gdx.graphics.g3d.*; 7 import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute; 8 import com.badlogic.gdx.graphics.g3d.environment.DirectionalLight; 9 import com.badlogic.gdx.graphics.g3d.utils.CameraInputController; 10 import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder; 11 12 public class MyGdxGame extends ApplicationAdapter { 13 public Environment environment;//可以包含点光源集合和线光源集合 14 public PerspectiveCamera cam;//3D视角 15 public Model model;//模型 16 public ModelInstance instance;//模型实例 17 public ModelBatch modelBatch; 18 19 public CameraInputController camController;//视角控制器 20 21 @Override 22 public void create () { 23 environment = new Environment(); 24 environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));//环境光 25 environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, -0.2f));//直线光源 26 27 modelBatch = new ModelBatch(); 28 cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());//67可以理解成一个定值,视角宽度(67度) 29 cam.position.set(10f, 10f, 10f); 30 cam.lookAt(0,0,0); 31 cam.near = 1f; 32 cam.far = 300f; 33 cam.update(); 34 35 camController = new CameraInputController(cam); 36 Gdx.input.setInputProcessor(camController); 37 38 ModelBuilder modelBuilder = new ModelBuilder();//Helper class 39 model = modelBuilder.createBox(5f, 5f, 5f, 40 new Material(ColorAttribute.createDiffuse(Color.GREEN)), 41 VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal); 42 instance = new ModelInstance(model); 43 44 45 46 } 47 48 @Override 49 public void render () { 50 camController.update(); 51 Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 52 Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); 53 54 modelBatch.begin(cam); 55 modelBatch.render(instance,environment); 56 modelBatch.end(); 57 } 58 59 @Override 60 public void dispose() { 61 model.dispose(); 62 super.dispose(); 63 } 64 }
3. 运行效果图