Texture pixelation problem

Started by
3 comments, last by Khatharr 10 years, 11 months ago

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.

J-GREEN

Greenpanoply
Advertisement

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

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

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?

J-GREEN

Greenpanoply

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.

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.

This topic is closed to new replies.

Advertisement