libGDX:与着色器相同的纹理,不同的纹理

时间:2014-04-23 13:30:48

标签: libgdx textures shader

我的名字是Tom(Ger),我正在用libGDX开发一个小3D游戏。

当我使用模型,ModelInstance和ModelBatch以及环境时,我可以使用正确的纹理渲染不同的ModelInstances(使用不同的模型)。

但我需要使用着色器进行一些摆动效果。

但是当我使用着色器时,除纹理外,一切都有效。我希望渲染的每个ModelInscance都有相同的内容。

我猜有纹理绑定问题。我以这种方式加载我的模型:

assets = new AssetManager();
assets.load("blob.g3db", Model.class);

并使用简单的方法获取它们:

public static Model getModel(String name) {
    return assets.get(name + ".g3db", Model.class);
}

所以我猜资产管理器也在加载纹理(导致它在没有着色器的情况下工作)。

我的问题是: 如何使用具有正确纹理的着色器渲染差异3D对象?

提前致谢... 汤姆

1 个答案:

答案 0 :(得分:0)

ModelModelInstance有一个Material,您可以在其中设置TextureColor和其他内容。 /> 因此,如果2 ModelInstance分享相同的Model,您可以将Material设置为ModelInstance。通过这样做,您有不同的TextureDefaultShader实现会关注它们。如果您创建自己的Shader,则需要注意它们 重要提示:如果没有 Shader,则无效,因为您始终使用Shader进行渲染。您没有手动设置Shader,但libgdx默认使用DefaultShader 我建议你阅读一些Xoppas tutorials