OpenGL / Libgdx剪刀

时间:2015-03-30 05:13:54

标签: opengl libgdx clipping

我在libgdx中尝试停止渲染组外的actor,以及组内的一些矩形,下面是一个例子

----------------------
----------------------
--******************--
--******************--
--*****--------*****--
--******************--
--******************--
----------------------
----------------------

该组被定义为*,我希望演员被绘制,-是我希望演员剪裁的地方。

我已经设法使用以下代码剪辑该组之外的任何演员;

    Rectangle scissors = new Rectangle();
    Rectangle clipBounds = new Rectangle(getX(), getY(), getWidth(), getHeight());
    ScissorStack.calculateScissors(screen.getCamera(), screen.getBatch().getTransformMatrix(), clipBounds, scissors);
    ScissorStack.pushScissors(scissors);
    super.draw(batch, parentAlpha);
    batch.flush();
    ScissorStack.popScissors();

我怎样才能剪辑组内的actor(我尝试添加其他剪辑边界但是它只渲染两个剪辑框内的精灵)。

谢谢,

1 个答案:

答案 0 :(得分:0)

我不认为你可以筑巢内部"反剪刀"剪刀区域内的区域。因此,据我所知,您不能使用基本的Libgdx / OpenGL原语来实现此目的。

你可以通过重新画出最内在的" ------"来完成类似的事情。绘制你的演员之后的区域(" ***"东西)。

或者,您可以使用模板缓冲区或深度缓冲区或自定义片段着色器。 (有关想法,请参阅https://github.com/mattdesl/lwjgl-basics/wiki/LibGDX-Masking。)