Libgdx 强制SpriteBatch切换纹理
我有一个问题,我想是因为缺少纹理开关。这是我的伪代码渲染方法Libgdx 强制SpriteBatch切换纹理,libgdx,Libgdx,我有一个问题,我想是因为缺少纹理开关。这是我的伪代码渲染方法 spriteBatch.begin(); render stuff spriteBatch.end(); setup shader with different texture render some Meshes spriteBatch.begin(); render stuff spriteBatch.end(); 这导致了非常奇怪的结果。我想问题是,SpriteBatch最初设置了一个纹理,然后着色器更改了该纹理,当Spr
spriteBatch.begin();
render stuff
spriteBatch.end();
setup shader with different texture
render some Meshes
spriteBatch.begin();
render stuff
spriteBatch.end();
这导致了非常奇怪的结果。我想问题是,SpriteBatch
最初设置了一个纹理,然后着色器更改了该纹理,当SpriteBatch
开始下一批batch.begin()
时,它不会调用switchTexture()
,因为它不知道纹理在同一时间发生了更改
我能做些什么来解决这个问题?有没有办法保存当前纹理、渲染网格和恢复以前的纹理?据我所知,没有办法告诉SpriteBatch它应该调用
switchTexture()
SpriteBatch不会自动切换回纹理单元0,因此如果您最近碰巧切换到其他纹理单元为网格绑定多个纹理,则必须手动切换回它
调用Gdx.gl.glActiveTexture(GL20.gl_TEXTURE0)如果您一直在使用具有多重纹理的内容,请在spriteBatch.begin()之前编写>代码
SpriteBatch不会保留对begin()
/end()
块之外的任何纹理的引用,但如果您将活动纹理保留为GL_TEXTURE0以外的内容,则当SpriteBatch为正在批处理的精灵绑定纹理时,它会将其绑定到错误的纹理单元,因此,它将从您最近的一个网格中,使用仍然位于GL_TEXTURE0中的任何对象绘制精灵