Один из возможных подходов состоит в том, чтобы вместо того, чтобы заботиться о том, сколько фигур нужно нарисовать;рассмотреть важность объектов;по существу, отображение числа объектов, которые должны быть нарисованы, с минимальной важностью для объекта, на быть нарисованным.
Например, можно использовать обратный логарифм:
// pseudocode
minimumImportance(count) = 1 / log(count)
Это дает, как пример;минимальное значение (100) = 1 / log (100) = 1/2 = 0,5;но минимальное значение (1000) дает 0,333.
В этой схеме 0,0 является наиболее важным, а 1,0 - наименьшим;но это можно перевернуть, слегка перефразировав функцию:
minimumImportance(count) = 1 - 1 / log(count)
Также было бы разумно добавить некоторый размышление к функции, но это оставлено читателю в качестве упражнения.
Редактировать: Чтобы уточнить, это означает, что объекты должны иметь важные значения, что означает, что в любой конкретной ситуации у вас может быть 1 объект важности 0, 10 важности 0,10, 100 важности 0,12 и т. Д.
Кроме того, этот вид схемы имеет дополнительный бонус: если каждая отдельная фигура также имеет значение ;Вы можете просто умножить важность формы на важность объекта в целом, чтобы получить взвешенную важность;возможность динамической детализации в загруженных ситуациях.
например: модель игрока имеет значение 0.5;туловище, руки, ноги и голова имеют значение 0,0, но глаза имеют значение 0,5;и пальцы важны 0,7.
. Если игрок - единственная вещь на экране, он прорисован во всех деталях;но если есть 1000 других объектов;пальцы и глаза забиты.