这是我之前的问题和帖子的延续,请参见此处。感谢我在那里收到的答案,我觉得我能够更接近我的目标,以及进一步学习 OpenGL,但在弄清楚使用模板缓冲区的基础知识后不久,我遇到了一个问题.
似乎当我将精灵绘制到模板缓冲区时,它会绘制整个正方形区域,而不是像我无知地希望的那样仅绘制不完全透明的像素。我隐约明白为什么会这样,但我不确定解决方案在哪里。我已经对模板本身进行了很多试验,并且我修改了 spritebatch 用来丢弃低 alpha 片段的着色器,但我似乎看不到更大的图景。
作为问题的直观示例,我将继续使用我在上一个问题中使用的示例。现在,试图在彼此上画两个圆圈(所以它们完美融合,没有重叠),我得到了这个:
所以,基本上,有没有办法让我使用 LibGDX 的 Sprite 和 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);