• Advertisement
Sign in to follow this  

Problem with depth test

This topic is 1405 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 loading a .obj model with assimp.
Simple models work fine, but as soon as I make something like a taurus, I get some back faces appearing.

http://imgur.com/4xKDiYX

The part where I turn depth testing on is:
 

	glEnable(GL_CULL_FACE);
	glCullFace(GL_BACK);
	glFrontFace(GL_CCW);
	
	glEnable(GL_DEPTH_TEST);
	glDepthFunc(GL_LEQUAL);

(I'm clearing both the colour and depth buffer)
Any guess about what I'm messing up?

(I'll post or link more code if needed later)
 

Edited by manasij7479

Share this post


Link to post
Share on other sites
Advertisement

Just for clarification: Back face culling and depth buffer are two completely independent features of OpenGL.

 

I suspect that the two get in the way of each other in your code.

 

Try to disable back face culling and rely solely on the depth buffer. Is it getting better or worse?

Share this post


Link to post
Share on other sites

post near nad far plane values of your projection matrix. In general, you should tweek them so that f/n is close to 24 bit integer capability. Setting for example near value to 0.0001 and far value to 100000.0 will result in depth inaccuracy.

Share this post


Link to post
Share on other sites

Try to disable back face culling and rely solely on the depth buffer. Is it getting better or worse?

 

If I turn off face culling, I get a lot more black strips. So, I'd say worse.

 

 

Try reversing the winding order?

The model was made in Blender.
If I reverse it when importing, the opposite places will appear coloured.
Can I do something like change it on the fly depending on which face is facing the light source ?

 

post near nad far plane values of your projection matrix. In general, you should tweek them so that f/n is close to 24 bit integer capability. Setting for example near value to 0.0001 and far value to 100000.0 will result in depth inaccuracy.

glm::mat4 p = glm::perspective(60.0f,1000*1.0f/600,0.1f,100.0f);

Much more conservative, I think.

Edited by manasij7479

Share this post


Link to post
Share on other sites

From what I can tell the issue is the model itself. It doesn't look like the taurus should even extend that far to the right if you look at the silhouette from the top and bottom. I think you have another issue. Have you tried looking at an obj of say a car or something online for free? Check out turbosquid and see if one of those works. Seems like there is some kind of issue with the file you have.

Share this post


Link to post
Share on other sites

http://imgur.com/4xKDiYX

I do not see any OpenGL error checking - add that: https://www.opengl.org/wiki/GLAPI/glGetError

The render looks distinctively in triangle-draw order - ie, there seems to be no depth testing (the near/far range is good). So, does your framebuffer/rendertarget actually HAVE a depth buffer? glEnable(GL_DEPTH_TEST) can not have any effect when you don't have a depth buffer to begin with. Edited by tanzanite7

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement