照明可渲染

时间:2014-07-27 10:02:59

标签: libgdx environment

请告诉我我做错了什么,灯光应用于模型但不适用于我的渲染。我已经设置了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();
}

代码太多了。

0 个答案:

没有答案
相关问题