本文介绍了LibGDX Stencil在使用SpriteBatch时缓冲的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我之前的问题和帖子的延续,见此处。感谢我在那里收到的答案,我觉得我能够更接近我的目标,以及进一步学习OpenGL,但在弄清楚使用模板缓冲区的基础知识后不久,我遇到了一个问题。
作为问题的一个直观例子,我将继续我在上一个问题中使用的例子。现在,试图在彼此之间绘制两个圆圈(所以它们完美融合,没有重叠),我得到了这个:
所以,基本上,有没有办法让我使用模板缓冲区LibGDX在复杂形状上的精灵和SpriteBatch功能(圆圈仅用作示例),还是我需要寻找替代路线?
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
Gdx.gl.glEnable(GL20.GL_BLEND);
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
Gdx.gl.glEnable(GL20.GL_DEPTH_TEST);
Gdx.gl.glDepthMask(true);
batch.begin();
sprite.draw(batch);
sprite2.draw(batch);
batch.end();
Gdx.gl.glDisable(GL20.GL_DEPTH_TEST);
推荐答案
TL; DR使用if (gl_FragColor.a< 0.01)丢弃;在片段着色器中确保生成一个片段(和模板值)。
这篇关于LibGDX Stencil在使用SpriteBatch时缓冲的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!