5
我一直在尝试在Libgdx项目中做一些模版。到目前为止,我只能模板化多边形(代码,在图之后)。OpenGL ES 2.0中的模版纹理
问题:我该如何在OpenGL ES 2.0中模板化非多边形形状? (即我不希望透明像素被绘制到模板缓冲区)
我该如何在不使用GL_ALPHA_TEST(因为OpenGL ES 2.0不允许它)的情况下实现这个功能?
任何帮助或指针非常感谢,并提前感谢。
编辑:这将是非常有帮助的,如果你可以提供我一点的代码样本理解。
请考虑如下图所示:
这是渲染代码:
@Override
public void render(float delta) {
Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_STENCIL_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
stage.act();
stage.draw();
Gdx.gl20.glColorMask(false, false, false, true);
Gdx.gl20.glDepthMask(false);
Gdx.gl20.glClearStencil(0x0);
Gdx.gl20.glEnable(GL20.GL_STENCIL_TEST);
Gdx.gl20.glStencilFunc(GL20.GL_ALWAYS, 0x1, 0x1);
Gdx.gl20.glStencilOp(GL20.GL_KEEP, GL20.GL_KEEP, GL20.GL_REPLACE);
batch.begin();
batch.draw(heart, 0, i+50);
batch.end();
Gdx.gl20.glColorMask(true, true, true, true);
Gdx.gl20.glDepthMask(true);
Gdx.gl20.glStencilFunc(GL20.GL_NOTEQUAL, 0x1, 0x1);
Gdx.gl20.glStencilOp(GL20.GL_KEEP, GL20.GL_KEEP, GL20.GL_KEEP);
batch.begin();
batch.draw(heart, 0, i);
batch.end();
Gdx.gl20.glDisable(GL20.GL_STENCIL_TEST);
}
我想知道如何在李bgdx ?? – Rafay