Sign in to follow this  
pressgreen

Texture pixelation problem

Recommended Posts

pressgreen    678

I am trying to create post processing affects to a frame buffer texture that i am applying to a quad that covers screen. I have set it up and it works just fine as far as rendering to that texture but the problem I am having is that the texture that is generated is pixelated and it also looks over exposed as far as the lighting. I am not sure if its the filtering i am choosing but it looks like there are no smoothed edges on all of the geometry. I would think because it is capturing the scene exactly it would look exactly like what is behind the quad but it does not.  here is my code i used to set up the frame buffer and also i will attach an image of what i am talking about. in the image the larger portion is the actual scene being rendered and then the smaller portion is the textured quad. any ideas on this would be quite helpful thinks.

 

	//------------------------------------------------------- create a renderbuffer objects to store texture info
	//glGenTextures(1, &fbotex);///----------------------------------------------- creating one color texture buffer
	glBindTexture(GL_TEXTURE_2D, tex);///----------------------------------------------- bind target with buffer
    glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, g_windowWidth, g_windowHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
	glBindTexture(GL_TEXTURE_2D, 0);

	////--------------------------------------------------------- create a renderbuffer object to store depth info
	glGenRenderbuffers(1, &rboId);///------------------------------------------------------ depth buffer
	glBindRenderbuffer(GL_RENDERBUFFER, rboId);
	glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, g_windowWidth, g_windowHeight);
	glBindRenderbuffer(GL_RENDERBUFFER, 0);
		
	// create a framebuffer object
	glGenFramebuffers(1, &fbo);
	glBindFramebuffer(GL_FRAMEBUFFER, fbo);
	

	// attach the texture to FBO color attachment point
	glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0);
	
	// attach the renderbuffer to depth attachment point
	glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rboId);



	// check if frame buffer was completed successfully
	 GLenum status;
	status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
	switch(status) {
	case GL_FRAMEBUFFER_UNDEFINED:
	    cerr << "FRAMEBUFFER_UNDEFINED."<< endl;
	break;
	case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
		cerr << "Frame buffer format not supported."<< endl;
	break;
	case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
		cerr << "FRAMEBUFFER_INCOMPLETE_ATTACHMENT"<< endl;
	break;
	case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER:
		cerr << "FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER"<< endl;
	break;
	case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER:
		cerr << "FRAMEBUFFER_INCOMPLETE_READ_BUFFER"<< endl;
	break;
	case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:
		cerr << "FRAMEBUFFER_INCOMPLETE_MULTISAMPLE"<< endl;
	break;
	case GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS:
		cerr << "FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS"<< endl;
	break;
	case GL_FRAMEBUFFER_COMPLETE:
	    cerr << "Framebuffer is complete!!!!"<< endl;
	break;
	case GL_FRAMEBUFFER_UNSUPPORTED:
		cerr << "FRAMEBUFFER_UNSUPPORTED"<< endl;
	break;
	default:
	   cerr << "Framebuffer Error."<< endl;
	}
	// switch back to window-system-provided framebuffer
	glBindFramebuffer(GL_FRAMEBUFFER, 0);

	checkGlErrors();

 I would also like to add that I am using 2 point lights for my lighting.

Edited by greenzone

Share this post


Link to post
Share on other sites
pressgreen    678

I will look into disabling the lights but I am mostly concerned with the pixelation issue around the objects in the texture along the curved or angled edges. should i be using a texture that has a greater dimension then the screen has when creating that texture? or is there something in the filtering i should set up to reduce this what looks like aliasing?

Share this post


Link to post
Share on other sites
pressgreen    678

So I fixed the lighting issue but i still have a full screen quad that has my screen rendered to it but it still looks pixelated. Im not  sure but it might be the size of my texture maybe. it looks just like the actual scene it just has a bad case of the jaggies. any one have thoughts on this?

Share this post


Link to post
Share on other sites
Khatharr    8812

I'm guessing there's some AA going on somewhere that's not applied when you R2T. I'd poke around the GL docs and see if there's anything about AA. If not then you can try gradually making the texture larger and see what happens.

Edited by Khatharr

Share this post


Link to post
Share on other sites

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