LibGdx阴影

作者: 大旺旺的弟弟小旺旺 | 来源:发表于2022-12-31 09:42 被阅读0次
ModelBuilder modelBuilder = new ModelBuilder();
        modelBuilder.begin();
        MeshPartBuilder mpb = modelBuilder.part("parts",
                GL20.GL_TRIANGLES,
                Usage.Position | Usage.Normal | Usage.ColorUnpacked,
            new Material(ColorAttribute.createDiffuse(Color.WHITE)));
        mpb.setColor(1f, 1f, 1f, 1f);
        mpb.box(0, -1.5f, 0, 10, 1, 10);
        mpb.setColor(1f, 0f, 1f, 1f);
        mpb.sphere(2f, 2f, 2f, 10, 10);
        model = modelBuilder.end();
        instance = new ModelInstance(model);

不加投影


image.png

加上投影需要绘制两部分,一个是阴影,先绘制,需要使用DepthShader

    ModelBuilder modelBuilder = new ModelBuilder();
        modelBuilder.begin();
        MeshPartBuilder mpb = modelBuilder.part("parts", GL20.GL_TRIANGLES, Usage.Position | Usage.Normal | Usage.ColorUnpacked,
            new Material(ColorAttribute.createDiffuse(Color.WHITE)));
mpb.setColor(1f, 1f, 1f, 1f);
mpb.box(0, -1.5f, 0, 10, 1, 10);
mpb.setColor(1f, 0f, 1f, 1f);
mpb.sphere(2f, 2f, 2f, 10, 10);
model = modelBuilder.end();
instance = new ModelInstance(model);
shadowBatch = new ModelBatch(new DepthShaderProvider());


绘制投影
shadowLight.begin(Vector3.Zero, cam.direction);
shadowBatch.begin(shadowLight.getCamera());
shadowBatch.render(instance);
shadowBatch.end();
shadowLight.end();

//绘制模型
modelBatch.begin(cam);
modelBatch.render(instance, environment);
modelBatch.end();   
image.png

相关文章

网友评论

    本文标题:LibGdx阴影

    本文链接:https://www.haomeiwen.com/subject/axofcdtx.html