Hi everyone!
I'm experiencing strange rendering artifacts when running my program on Intel graphics hardware. According
to Google that's not unusual, so I'm hoping you guys have some advice for me
See the attached image. I have a NVIDIA Optimus laptop setup. On the right side you see the output
of the dedicated NVIDIA GPU, which i consider to be correct. On the left side you see the output of the
Intel HD 3000 onboard GPU, using the most recent drivers, showing some kind of white stripes, which
flimmer when moving the object or the camera. I think this looks like z-fighting.
I'm doing pretty basic multiple pass lighting, with this setup:
Pass No. DepthMask DepthFunc
0 TRUE LESS
1 FALSE EQUAL
>1 FALSE EQUAL
The problem does not show up if I render only one pass.
I tried to eliminate the most likely reasons for z-fighting:
On both GPUs the depth buffer is 24bit in size. (checked using glGet*(GL_DEPTH_BITS)
and QGLFormat::depthBufferSize())
In my projection matrix, I set [zNear, zFar] to reasonable values, eg. [0.1, 100], [1, 40].
Playing around with glPolygonOffset didn't solve the problem.
The white stripes are still visible, when I draw the mesh in solid black, by setting the lighting
color to black.
When I disable blending, the stripes become black and the problem remains the same.
So basically, I have no idea what to do Do you guys have any advice or idea
what might be the problem?