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