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)在原点,进行缩放,然后反向平移,使(sx,sy)又回到了原来的位置。

于 2012-06-10T14:42:09.120 回答