Jump to content
  • Advertisement
Sign in to follow this  
pressgreen

Texture pixelation problem

This topic is 2051 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

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
Advertisement

disable lighting when rendering the fullscreen quad? assuming that its some sort of material specular causing the washout.

Share this post


Link to post
Share on other sites

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

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

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
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!