我很高兴地使用LibGDX框架的SpriteBatch类。 我的目标是通过着色器修改精灵的表示。LibGDX SpriteBatch Multitexture可能吗?
batch = new SpriteBatch(2, shaderProgram);
我复制从SpriteBatch类的默认渲染,加上另一个 均匀采样2D
+ "uniform sampler2D u_Texture2;\n"//
有没有一种工作方式给纹理着色器。 这样做,allways结束了一个ClearColor屏幕。
batch.begin();
texture2.bind(1);
shaderProgram.setUniformi("u_Texture2", 1);
batch.draw(spriteTexture,positions[0].x,positions[0].y);
batch.draw(spriteTexture,positions[1].x,positions[1].y);
batch.end();
单独使用每个纹理都可以。在网格类的帮助下手动绘制按预期工作。那么我能做些什么来使用SpriteBatch的便利?
THX for Help
嘿最后我得到了答案,谢谢! 你说得对。这是类绑定纹理的原因。我需要说我已经制作了我自己的自定义SpriteBatch类。 SpriteBatch在渲染更大尺寸的Framebuffer纹理时也显示了一些问题。我之前总是绑定TEXTURE0。这就是为什么我决定按照自己的方式去做。不太方便,但方式更灵活。现在我有一个Sprite Batch,它只处理顶点的生成。所有东西都可以用自己的着色器进行定制。 – fky 2012-09-07 16:20:09
请注意,SpriteBatch只会生成顶点,如果您不小心,会遇到性能问题。 SpriteBatch本身有一些“可用性”问题,但这是一个设计决定。它旨在简化最常见的绘图操作,并以某种方式伤害灵活性。无论如何,我已经能够解决目前为止我遇到的大多数问题(大多数情况下,在使用之前启用/禁用适当的opengl标志)。也许今晚我会尝试像你一样实施多纹理,并让你知道;) – 2012-09-07 17:33:18
谢谢你的支持。它像你编辑的一样工作。但是,我不喜欢它。这对我来说看起来很危险。我更喜欢我的专用版本,因为它的体积更小,因此也更快,更好的调试。 SpriteBatch正在努力让每个人都开心。在我看来,这不是真正的性能优化类。但无论如何,感谢您澄清SpriteBatch使用最后绑定纹理而不仅仅是TEXTURE0 – fky 2012-09-17 15:26:11