0

グロー効果を与えるために、太陽の周りにぼかしを入れようとしています。

ここでメソッドを使用しています:

http://nehe.gamedev.net/tutorial/radial_blur__rendering_to_a_texture/18004/

基本的に、私は球を描きます。それは現在のバッファを取り、テクスチャとしてそれをつかみ、何度も再描画し、毎回それを伸ばします。

これは、オブジェクトが画面の中央にある場合にうまく機能します。ただし、右上と言うようにオフセットさせたい。

これは、調整が必要だと私が信じている主要部分です。

glColor4f(1.0f, 1.0f, 1.0f, alpha);                 // Set The Alpha Value (Starts At 0.2)
            glTexCoord2f(0+spost,1-spost);                      // Texture Coordinate   ( 0, 1 )
            glVertex2f(0,0);                                    // First Vertex     (   0,   0 )

            glTexCoord2f(0+spost,0+spost);                      // Texture Coordinate   ( 0, 0 )
            glVertex2f(0,480);                                  // Second Vertex    (   0, 480 )

            glTexCoord2f(1-spost,0+spost);                      // Texture Coordinate   ( 1, 0 )
            glVertex2f(640,480);                                // Third Vertex     ( 640, 480 )

            glTexCoord2f(1-spost,1-spost);                      // Texture Coordinate   ( 1, 1 )
            glVertex2f(640,0);

ただし、私の人生では、ぼやけた画像が右にオフセットされないように、毎回オフセットする方法を見つけることができません。画面全体がキャプチャされていることは理解していますが、テクスチャが描画されるときにこれをオフセットする方法があるはずです.....

どのように?

4

2 に答える 2

3

これはあなたの質問に対する直接的な答えではないかもしれませんが、固定パイプラインを介した効果にあまり注目すべきではありません。NeHE のチュートリアルは優れていますが、少し古くなっています。基本をざっと読んで、コードにシェーダーを組み込むことをお勧めします。それらははるかに高速であり、はるかに複雑な効果を簡単に作成できます。

于 2012-06-10T15:03:57.007 に答える
0

一般に、点 (sx,sy) を中心にスケーリングする場合は、(sx,sy) が原点になるように世界を変換し、スケーリングを行い、(s​​x, sy) となるように逆方向に変換する必要があります。元の場所に戻っています。

于 2012-06-10T14:42:09.120 に答える