【问题标题】:How can I clip a circle?我怎样才能剪出一个圆圈?
【发布时间】:2015-12-16 13:43:46
【问题描述】:

如何使用 libGDX 剪裁圆?剪裁矩形非常容易Gdx.gl.glScissor(int x,int y,int width,int height)。有什么方法可以剪圆还是我需要一些算法?

【问题讨论】:

  • 该命令适用于您绘制的任何内容。
  • 虽然搜索“libgdx clip circle”并没有太大帮助,但也许搜索一个通用的 opengl 解决方案可能会帮助您找到可以使用的东西。例如,尝试使用谷歌搜索“opengl 剪辑圆”。
  • 那个命令对你画的任何东西都有效???所以给我一个使用圆圈的例子??该命令将位置和 widthheight 作为参数,那么圆 radius 呢??
  • 你是说你想切一块馅饼,可以说是为了剪圆?
  • 您的问题在我听来就像您在问如何剪裁一个圆,而不是如何剪裁任意形状with 一个圆。剪辑命令总是从你在它之后绘制的任何东西中剪下一个矩形。对于矩形以外的任何东西,您都不能简单地剪辑。您需要在自定义着色器程序中使用多重纹理。但如何做到这一点完全取决于你在做什么。你是从许多精灵中剪出同一个圆还是只剪一个?

标签: opengl libgdx


【解决方案1】:

可以使用深度缓冲区来剪圆:

    //clear screen

    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

    //clear depth buffer with 1.0 : 

    Gdx.gl.glClear(GL10.GL_DEPTH_BUFFER_BIT);

    //set the function to LESS

    Gdx.gl.glDepthFunc(GL20.GL_LESS);

    //enable depth writing

    Gdx.gl.glEnable(GL20.GL_DEPTH_TEST);

    //Enable depth mask and disable RGBA color writing

    Gdx.gl.glDepthMask(true);

   Gdx.gl.glColorMask(false, false, false, false);

    //rendering(Circle ect..) primitive shapes

    shapeRenderer.begin();
    shapeRenderer.circle(x, y, radius);
    shapeRenderer.end();

    batch.begin();

     //Enable RGBA color writing

    Gdx.gl.glColorMask(true, true, true, true);

    //Enable testing

    Gdx.gl.glEnable(GL10.GL_DEPTH_TEST);

    //Discards pixels outside masked shapes

    Gdx.gl.glDepthFunc(GL10.GL_EQUAL);

    batch.draw(...);

    batch.end();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2013-07-29
    相关资源
    最近更新 更多