Hi there,
I have a beginner problem which I don’t success to resolve…
I draw a grid on floor (z=0) using GL_LINES and I draw X, Y and Z axis on it (z=0) using GL_LINES with line with of 3.0f.
I have stitching (z-fighting) between grid and axis.
How can I solve this problem ? (I need depth testing).
Offset the axes or the plane a little. You can also draw the plane, disable depth testing and then draw the axes.
BTW, OpenGL uses Y as the the “up” axis. The plane which most likely servers as the “floor” is most likely the XZ-plane. Are you sure about your coordinates or is it a typo?
Yes I have done some typo errors.
So, I draw the floor as a grid on XZ plane.
Next, I draw axis.
Next, I draw a simple polygon (to test).
And as grid and X/Z axis have same Y, there is a stitching phenomena between them.
I will be clearest saying that my problem is drawing line over another line with same Y coordinate renders unpredictable behavior because we don’t know which line will be drawn over the other.
Can you tell me if I am correct, and what could be the solution ?
As I said, you can simply offset the coordinate axes a little in y-direction. That’s the easiest way.
I’d rather want to not alter axis coordinates. Is there another solution to tell that last drawn primitives over pixels are the one which may appear ?
You are going to run into that situation often because the z values will not be exactly for 2 lines that are rendered at the same location and if their vertices don’t match.
- Reduce the difference between the znear and zfar values for your projection matrix.
- Make sure the znear and zfar are not invalid values, such as 0.0 for gluPerspective/glFrustum.
- You can set glDepthTest(GL_LEQUAL)
- Or just disable depth testing and you must sort the lines yourself.