[SOLVED] Set a Render Target for my Shader

Hello,

I’m pretty sure there are some tutorials but unfortunately I don’t know what to search for exactly.
It would be nice if somebody could give me a link or a search keyword how to find more information.

Thanks in advance!

My Question:

I am drawing some stuff using a little shader. To keep it simple I will use a default shader here:

shader.vert (Vertex Shader):

void main()
{
	gl_TexCoord[0] = gl_MultiTexCoord0;
	gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}

shader.frag (Fragment Shader):

uniform sampler2D tex;

void main()
{
	gl_FragColor = texture2D(tex, gl_TexCoord[0].st);
}

I want to get this shader to draw its output on a temporary texture rather than on the default frame buffer. I want to do this because some of my game objects consist of 30+ little textures that almost never change. I would like to save the resulting image for such a game object in a separate texture instead of drawing all 30+ textures directly on the frame buffer each time.

Do I need to pass another sampler2D to my shader and tell it to use it as output texture?
Or what would I need to do here?

Thanks for any help!
Xoric

You need to use framebuffer objects so that you can render directly into another texture. This seems like a pretty good tutorial that gives a lot of information: http://www.songho.ca/opengl/gl_fbo.html

Hello lhkbob,

that was exactly what I was looking for! Especially the example at the end of the tutorial really helped me. After reworking the code in order to use it in Java I got it working pretty fast. Some problems remain but I will now be able to find the answers myself.

Thanks a lot for your kind help!

Greetings, Xoric