如何在没有着色器的libGDX中创建高斯模糊效果

时间:2017-06-04 14:56:13

标签: java opengl-es libgdx blur

如何在没有任何着色器的情况下创建高斯模糊效果?我尝试了许多着色器教程,但我从来没有让它工作。我也试过这个链接。 https://github.com/mattdesl/lwjgl-basics/wiki/OpenGL-ES-Blurs 但是,我无法将屏幕转换为像素图。你们能指出我在哪里找到正确答案的正确方向吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

要绘制没有着色器的模糊,您需要将原始场景绘制到某个纹理。然后使用一些混合在主缓冲区上绘制NxN次纹理。 Alpha必须对应于取决于NxN矩阵中的偏移的因子。就像伪:

for(int heightDiff=-N; heightDiff<=N; heightDiff++) {
    for(int widthDiff=-N; widthDiff<=N; widthDiff++) {
       float alpha = 1.0/max(width, height); // Not a correct equation
       glColor(1.0, 1.0, 1.0, alpha):
       drawFullscreenWithOffset(widthDiff, heightDiff);
    }
}

虽然可能是分离垂直和水平模糊的优化。这意味着您需要选择其中一个并将其绘制到新纹理,然后使用该纹理在主缓冲区上绘制另一个模糊。您获得了额外的纹理,但是将NxN绘制减少到2 * N.