如何不显示光罩的边缘?

时间:2019-05-13 02:58:04

标签: opengl libgdx

我正在使用此图像作为我的光罩:

enter image description here

但是在游戏中,边缘是可见的,如下所示:

enter image description here

我该怎么做才能阻止这种情况的发生?图像或渲染方式是否有问题?我的代码如下:

frameBuffer.begin();

    Gdx.gl.glClearColor(CLEAR, CLEAR, CLEAR * 2, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    batch.setProjectionMatrix(camera.combined);
    batch.setBlendFunction(GL20.GL_ONE, GL20.GL_ONE);
    batch.begin();

    // render lights
    currentMap.lightsController.render(batch);

    batch.end();

    frameBuffer.end();

    Gdx.gl.glClearColor(0, 0, 0, 1);
    batch.setBlendFunction(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    // render map, entities, everything
    currentMap.render(camera, batch);

    batch.setProjectionMatrix(batch.getProjectionMatrix().idt());
    batch.setBlendFunction(GL20.GL_ZERO, GL20.GL_SRC_COLOR);
    batch.begin();
    batch.draw(frameBuffer.getColorBufferTexture(), -1, 1, 2, -2);
    batch.end();

1 个答案:

答案 0 :(得分:1)

问题在于纹理本身。它只是不褪色以完成黑暗/黑色。在纹理的边缘,该值(亮度)仍约为3%。只需重新加工纹理并确保渐变正确即可。