我的名字是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
对象?
提前致谢... 汤姆
答案 0 :(得分:0)
Model
和ModelInstance
有一个Material
,您可以在其中设置Texture
,Color
和其他内容。 />
因此,如果2 ModelInstance
分享相同的Model
,您可以将Material
设置为ModelInstance
。通过这样做,您有不同的Texture
。 DefaultShader
实现会关注它们。如果您创建自己的Shader
,则需要注意它们
重要提示:如果没有 Shader
,则无效,因为您始终使用Shader
进行渲染。您没有手动设置Shader
,但libgdx默认使用DefaultShader
我建议你阅读一些Xoppas tutorials。