【问题标题】:OpenGL/Libgdx scissorsOpenGL/Libgdx 剪刀
【发布时间】:2015-06-03 00:46:15
【问题描述】:

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

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

该组被定义为*,这是我希望绘制演员的位置,- 是我希望剪辑演员的位置。

我已经使用下面的代码来剪辑组外的任何演员;

    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();

如何在组内也剪辑演员(我尝试添加其他剪辑边界,但它只渲染两个剪辑边界内的精灵)。

谢谢,

【问题讨论】:

    标签: opengl libgdx clipping


    【解决方案1】:

    我认为您不能在剪刀区域内嵌套内部“反剪刀”区域。因此,据我所知,您不能使用基本的 Libgdx/OpenGL 原语来完成此操作。

    您可以通过在绘制演员后重新绘制最里面的“------”区域来完成类似的操作(“***”的东西)。

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

    【讨论】:

    猜你喜欢
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 2014-08-08
    相关资源
    最近更新 更多