请告诉我我做错了什么,灯光应用于模型但不适用于我的渲染。我已经设置了Enviroment,但它不起作用。
效果:立方体正在使用环境,但我的身材没有。 effect
public void create () {
environment = new Environment();
environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
environment.add(new DirectionalLight().set(1f, 0.8f, 0.8f, -1f, -0.8f, -0.2f));
cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
cam.position.set(6f, 0f, 0f);
cam.lookAt(0,0,0);
cam.near = 1f;
cam.far = 300f;
camController = new CameraInputController(cam);
Gdx.input.setInputProcessor(camController);
cam.update();
mesh = new Mesh(true, 40, 60, VertexAttribute.Position(), VertexAttribute.TexCoords(0));
mesh.setVertices(new float[] {
0f, 0f, 1f, 0, 0,
1f, 0f, 0f, 1, 0,
1f, -1f, 0f, 1, 1,
1f, 1f, 0f, 1, 1,
0f, 1f, 0f, 0, 1,
0f, -1f, 0f, 0, 1,
-1f, -1f, 0f, 1, 1,
-1f, 0f, 0f, 1, 0,
-1f, 1f, 0f, 1, 1});
mesh.setIndices(new short[] {4,8,7,7,6,5,5,2,1,1,3,4,4,0,1,1,0,5,5,0,7,7,0,4});
Material material = new Material();
texture = new Texture(Gdx.files.local("grass.jpg"));
material.set(TextureAttribute.createDiffuse(texture));
ModelBuilder modelBuilder = new ModelBuilder();
model = modelBuilder.createBox(2f, 2f, 2f, material, Usage.Position | Usage.Normal | Usage.TextureCoordinates);
instance = new ModelInstance(model);
instance.materials.get(0).set(TextureAttribute.createDiffuse(texture));
instance.transform.setTranslation(new Vector3(0,3,0));
rend = new Renderable();
rend.mesh=mesh;
rend.meshPartSize=40;
rend.primitiveType=GL20.GL_TRIANGLES;
rend.material = material;
rend.environment=environment;
modbatch = new ModelBatch();
}
@Override
public void render () {
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
Gdx.gl20.glClearColor(0.2f, 0.2f, 0.2f, 1);
camController.update();
modbatch.begin(cam);
modbatch.render(rend);
modbatch.render(instance, environment);
modbatch.end();
}
代码太多了。