Sign in to follow this  

Render on targets starting from an already rendered one

This topic is 1282 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Sorry, soved this. Mod I ask you to delete the topic if possible as is useless now, was indeed a stupid thing.

Edited by jjtulip

Share this post


Link to post
Share on other sites
Do not edit your questions out and replace them with an “I solved this”.
Post your question and then your solution so that others with the same problem (even if it is stupid) may be able to find the answers as well.
 

Hi all!
I have to perform a double pass convolution on a texture that is actually the color attachment of another render target, and store it in the color attachment of ANOTHER render target. This must be done multiple time, but using the same texture as starting point

What I do now is (a bit abstracted, but what I have abstract is guaranteed to work singularly)


	renderOnRT(firstTarget); // This is working. 

	for each other RT currRT{
		glBindFramebuffer(GL_FRAMEBUFFER, currRT.frameBufferID);	
		programX.use();
		glActiveTexture(GL_TEXTURE0);
		glBindTexture(GL_TEXTURE_2D, firstTarget.colorAttachmentID);
		programX.setUniform1i("colourTexture",0);
		glActiveTexture(GL_TEXTURE1);
		glBindTexture(GL_TEXTURE_2D, firstTarget.depthAttachmentID);
		programX.setUniform1i("depthTexture",1);
		glBindBuffer(GL_ARRAY_BUFFER, quadBuffID); // quadBuffID is a VBO for a screen aligned quad. It is fine.
		programX.vertexAttribPointer(POSITION_ATTRIBUTE, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
		glDrawArrays(GL_QUADS,0,4);

		programY.use();
		glActiveTexture(GL_TEXTURE0);
		glBindTexture(GL_TEXTURE_2D, currRT.colorAttachmentID); // The second pass is done on the previous pass
		programY.setUniform1i("colourTexture",0);
		glActiveTexture(GL_TEXTURE1);
		glBindTexture(GL_TEXTURE_2D, currRT.depthAttachmentID);
		programY.setUniform1i("depthTexture",1);
		glBindBuffer(GL_ARRAY_BUFFER, quadBuffID);
		programY.vertexAttribPointer(POSITION_ATTRIBUTE, 3, GL_FLOAT, GL_FALSE, 0, (void*)0);
		glDrawArrays(GL_QUADS, 0, 4);
    }

The problem is that I end up with black textures and not the wanted result. If I render them on screen with a simple passthrough with a screen-aligned quad the result is all but black.

The GLSL programs program(X,Y) works fine, already tested on single targets.

Is there something stupid I am missing? I'm bashing my head on this code since yesterday morning with no luck...

Any hint is much appreciated smile.png Thank you!


Feel free to post your solution.
 
 
L. Spiro

Share this post


Link to post
Share on other sites

This topic is 1282 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this