Here's the code in its entirety, for more context:
private static final int RTSIZE
= 1024; private static float radius
= 3; private static float MAX_BLUR
= 3; public static void main
(String[] args
) { RenderWindow rw
= new RenderWindow
(); rw.
create(new VideoMode
(800,
600),
"Gaussian Blur!"); Texture t
= new Texture
(); try { t.
loadFromFile(Paths.
get("textures/bg.jpg")); } catch (IOException ex
) { } Sprite bgSprite
= new Sprite
(t
); RenderTexture blurTargetA
= new RenderTexture
(); try { blurTargetA.
create(RTSIZE, RTSIZE
); } catch (TextureCreationException ex
) { } RenderTexture blurTargetB
= new RenderTexture
(); try { blurTargetB.
create(RTSIZE, RTSIZE
); } catch (TextureCreationException ex
) { } Shader blurShader
= new Shader
(); try { blurShader.
loadFromFile(Paths.
get("src/shaderpractice/frag.glsl"), Shader.
Type.
FRAGMENT); } catch (IOException | ShaderSourceException ex
) { } blurShader.
setParameter("u_texture", t
); blurShader.
setParameter("dir",
new Vector2f
(0,
0)); blurShader.
setParameter("resolution", RTSIZE
); blurShader.
setParameter("radius", radius
); while (rw.
isOpen()) { Vector2f mousePos
= rw.
mapPixelToCoords(Mouse.
getPosition()); blurTargetA.
clear(); blurTargetA.
draw(bgSprite
); blurTargetA.
display(); blurShader.
setParameter("dir",
new Vector2f
(1,
0)); float mouseXAmt
= mousePos.
x / rw.
getSize().
x; blurShader.
setParameter("radius", mouseXAmt
* MAX_BLUR
); blurTargetB.
clear(); blurTargetB.
draw(bgSprite,
new RenderStates
(blurShader
)); blurTargetB.
display(); blurShader.
setParameter("dir",
new Vector2f
(0,
1)); float mouseYAmt
= (rw.
getSize().
y-mousePos.
y-1) / rw.
getSize().
y; blurShader.
setParameter("radius", mouseYAmt
* MAX_BLUR
); rw.
draw(bgSprite,
new RenderStates
(blurShader
)); rw.
display(); for (Event event
: rw.
pollEvents()) { if (event.
type == Event.
Type.
CLOSED) { rw.
close(); } } } }
Using a sprite:RenderTexture rt = ...;
Sprite sprite = ...;
sprite.setTexture(rt.getTexture());
// draw sprite as usual