2017-06-04 13 views
0

どのようにシェーダなしでガウス効果を作成しますか?私は多くのシェーダーチュートリアルを試しましたが、うまく動作することはありませんでした。私もこのリンクを試みました。 https://github.com/mattdesl/lwjgl-basics/wiki/OpenGL-ES-Blurs しかし、画面をpixmapに変換することができませんでした。あなたは正しい答えを得るためにどこに向かうべきか、私は正しい方向に向いていますか?libGDXでシャドウなしでガウスブラーエフェクトを作成する方法

ありがとうございます!

+0

リアルタイムのぼかしが必要な場合は、シェーダで処理する必要があります。速度が重要でない場合は、Pixmapを畳み込むことができますが、組み込みの方法はありません。ピクセルByteBufferを反復してコンボリューションする必要があります。 – Tenfour04

答えて

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

垂直方向と水平方向のぼかしを分離することが最適化されている可能性があります。つまり、それらの1つを選択して新しいテクスチャに描画し、それを使ってメインバッファに他のぼかしを描画する必要があります。あなたは余分なテクスチャを得るが、NxNの描画を2 * Nに減らす。

関連する問題