使用ShaperEnder(libgdx)的辉光效果

使用ShaperEnder(libgdx)的辉光效果,libgdx,blur,glow,Libgdx,Blur,Glow,我读到了有关使用精灵的辉光/粒子效应的文章,它们工作得很好 有没有一种简单的方法可以通过简单的变形器功能(如圆)来创建类似的模糊效果 @Override public void draw(Batch batch, float parentAlpha) { super.draw(batch, parentAlpha); batch.end(); shapeRenderer.begin(ShapeRenderer.ShapeType.Point); shapeRend

我读到了有关使用精灵的辉光/粒子效应的文章,它们工作得很好

有没有一种简单的方法可以通过简单的变形器功能(如圆)来创建类似的模糊效果

@Override
public void draw(Batch batch, float parentAlpha) {
    super.draw(batch, parentAlpha);
    batch.end();
    shapeRenderer.begin(ShapeRenderer.ShapeType.Point);
    shapeRenderer.setAutoShapeType(true);
    drawCircle();
    shapeRenderer.end();
    batch.begin();
}

private void drawCircle() {
    shapeRenderer.setColor(Color.WHITE);
    shapeRenderer.set(ShapeRenderer.ShapeType.Filled);
    // apply effect ??
    shapeRenderer.circle(10,10,2);
}

您不能将纹理与默认Shapender一起使用

有几种方法可以做到这一点,但最简单的方法是使用ShapeDrawer库。它为SpriteBatch添加了一些“类似ShaperEnder”的功能等等。请参见

是的,您可以创建“辉光”效果,这可以通过使用超过边界的递减alpha值进行绘制来实现

首先,要定义光晕效果参数,让我们确定发光对象的最大边界,即光晕结束的位置,即光晕大小的
auraSize

接下来,我们需要知道对象实体部分的大小,即不发光的位,我们将其称为对象大小的
objSize

为了得出这个结论,我们可以使用一个简单的
for
循环和一些
if
语句:

private void drawCircle() {
    shapeRenderer.set(ShapeRenderer.ShapeType.Filled);

    //Draw circles upto the size of aura
    for(int radius = 0; radius < auraSize; radius++) {
        /*
        * Checks if radius fits object size, sets colour to solid white if so
        * Interpolates alpha value to 0 based on distance to aura covered by radius otherwise
        */
        if(radius <= objSize) {
            shapeRenderer.setColor(Color.WHITE);
        } else {
            shapeRenderer.setColor(new Color(1, 1, 1,
                     MathUtils.lerp(1, 0, (radius - objSize) / (auraSize / objSize))));
        }

        //Draws the circle at the current radius
        shapeRenderer.circle(10, 10, radius);
    }
}
private void drawCircle(){
shaperender.set(shaperender.ShapeType.Filled);
//画出光环大小的圆圈
用于(整数半径=0;半径<大小;半径++){
/*
*检查半径是否适合对象大小,如果适合,将颜色设置为纯白
*根据半径覆盖的光环距离,将alpha值插值为0
*/

if(radius)您想这样做以便使任意形状发光吗?预渲染的发光精灵将更有效,更容易获得发光圆。要使用任意形状渲染器形状,您可以绘制帧缓冲区并进行一些模糊后处理。这并不简单,但有一些库可以使其更容易。