Jump to content

  • Log In with Google      Sign In   
  • Create Account

Texture pixelation problem


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 greenzone   Members   -  Reputation: 672

Like
0Likes
Like

Posted 29 April 2013 - 08:53 AM

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.

Attached Thumbnails

  • framebuffer texture.PNG

Edited by greenzone, 29 April 2013 - 08:55 AM.

J-GREEN

Greenpanoply

Sponsor:

#2 radioteeth   Prime Members   -  Reputation: 1054

Like
1Likes
Like

Posted 29 April 2013 - 10:41 AM

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



#3 greenzone   Members   -  Reputation: 672

Like
0Likes
Like

Posted 29 April 2013 - 10:58 AM

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?


J-GREEN

Greenpanoply

#4 greenzone   Members   -  Reputation: 672

Like
0Likes
Like

Posted 29 April 2013 - 05:31 PM

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?

Attached Thumbnails

  • pixelated.PNG

J-GREEN

Greenpanoply

#5 Khatharr   Crossbones+   -  Reputation: 3003

Like
0Likes
Like

Posted 29 April 2013 - 08:24 PM

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, 29 April 2013 - 08:25 PM.

void hurrrrrrrr() {__asm sub [ebp+4],5;}

There are ten kinds of people in this world: those who understand binary and those who don't.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS