【问题标题】:libGDX: same texture with shaders, different textures withoutlibGDX:具有着色器的相同纹理,没有不同的纹理
【发布时间】:2014-04-23 13:30:48
【问题描述】:

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

当我使用模型、带有 ModelBatch 的 ModelInstance 和 Environment 时,我可以使用正确的纹理渲染不同的 ModelInstance(具有不同的模型)。

但我需要使用着色器来制作一些摆动效果。

但是当我使用着色器时,一切都可以正常工作,除了纹理。我要渲染的每个 ModelInscance 都有相同的。

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

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

并通过简单的方式获取它们:

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

所以我猜 assetsManager 也在加载纹理(因为它可以在没有着色器的情况下工作)。

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

在此先感谢... 汤姆

【问题讨论】:

    标签: libgdx textures shader


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多