Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Libgdx 强制SpriteBatch切换纹理_Libgdx - Fatal编程技术网

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()
/
end()
块之外的任何纹理的引用,但如果您将活动纹理保留为GL_TEXTURE0以外的内容,则当SpriteBatch为正在批处理的精灵绑定纹理时,它会将其绑定到错误的纹理单元,因此,它将从您最近的一个网格中,使用仍然位于GL_TEXTURE0中的任何对象绘制精灵