Quick answer: Your game flickers for one of several distinct reasons, and identifying the type is the key: z-fighting (two surfaces at nearly the same depth flickering over which renders), buffering problems (improper double buffering causing screen-wide flicker), uncleared frame buffers (garbage or previous-frame data flickering through), or GPU-specific precision issues (flicker only on certain hardware). Each has a different fix.
Flickering is a broad symptom with several underlying causes, so the key to understanding it is identifying what kind of flicker you have. A flickering surface (z-fighting) is a different problem from a flickering whole screen (buffering) or flicker that only appears on certain GPUs (precision).
The Types of Flickering
Flickering comes in distinct forms. Z-fighting: two surfaces at the same or nearly-the-same depth flicker as the GPU alternates which is in front, surface-level flicker on specific overlapping geometry. Buffering issues: problems with double buffering (rendering to a buffer being displayed, or not swapping correctly) cause screen-wide flicker. Uninitialized/uncleared buffers: not clearing the frame buffer between frames can leave garbage or previous-frame data flickering through. And GPU-specific precision/compatibility: flicker only on certain GPUs often indicates a precision issue (insufficient depth/float precision) or a rendering path that misbehaves on that hardware.
So 'flickering' could be localized surface flicker (z-fighting), screen-wide flicker (buffering/clearing), or hardware-specific flicker (precision). Determining the type is step one.
How to Diagnose and Fix It
Characterize the flicker: specific surfaces flickering (z-fighting), the whole screen (buffering/clearing), garbage/previous-frame data showing through (uncleared buffers), or flicker only on certain GPUs (precision/compatibility). For GPU-specific flicker, capture device context; Bugnet captures reports with device context so flicker reports and any GPU correlation surface, distinguishing a universal rendering bug from a hardware-specific one.
Fix per type: separate depths for z-fighting (offset surfaces, tighten near/far planes), ensure proper double buffering for buffering flicker, clear the frame/depth buffers each frame for uncleared-buffer flicker, and address precision or provide an alternate path for GPU-specific flicker. See our guides on fixing flickering graphics and z-fighting.
Flickering has several causes, z-fighting, buffering, uncleared buffers, GPU precision. Identify the type (surface, screen-wide, or GPU-specific) first, then apply the matching fix.