Мы назвали это «z-fight», но более распространенным термином являются проблемы z-порядка или z-буфера.
Я постараюсь объяснить проблему без диаграмм 1-й.
3D рендеры работают, рисуя многоугольники сзади вперед. Это делается путем назначения каждого многоугольника одной из дискретных позиций. Это работает для большинства сцен.
Вы получаете проблему, когда недостаточно слотов, чтобы иметь возможность решить, какой полигон находится перед другим.
Чтобы решить ее - это будет зависеть от вашего приложения, но есть ряд вещей, которые должны быть общими для всех:
- Убедитесь, что ограничивающая рамка мира настолько мала, насколько это возможно.
- Увеличение глубины цвета вашего дисплея. И OpenGL, и Direct3D могут привязать количество слотов z к разрешению дисплея.
- Увеличьте число / уменьшите размер ваших треугольников. Меньшие треугольники будут меньше затронуты этим - но снизят производительность, так как есть еще что рисовать.
Если вы работаете в Windows, вы должны установить на рабочем столе самое высокое цветное разрешение. Ваше приложение может использовать его по умолчанию.
Можно ли переключаться между рендерингом OpenGL и Direct3D? Если это так, то попробуйте оба варианта: один может дать лучшие результаты, чем другой.