Обычно ваше приложение должно выполнять эти оптимизации - OpenGL буквально является просто частью рендеринга и не выполняет управление объектами или что-то в этом роде. Если вы передаете данные для чего-то невидимого, ему все равно придется преобразовать соответствующие координаты в пространство просмотра, прежде чем он сможет определить, что он полностью находится за пределами экрана или находится за пределами одной из ваших плоскостей отсечения.
Существует несколько способов отбраковки невидимых объектов из конвейера. Проверка, находится ли объект за камерой, является, вероятно, самой простой и дешевой проверкой, поскольку вы можете отклонить половину своего набора данных в среднем с помощью простого вычисления для объекта. Не намного сложнее выполнить такой же тест с фактическим усечением вида, чтобы отвергнуть все, что вообще не видно.
Очевидно, что в сложной игре вам не нужно будет делать это для каждого крошечного объекта, поэтому типично сгруппировать их, либо иерархически (например, вы не рендерите оружие, если вы уже определили, что вы не отображать персонажа, который его держит), пространственно (например, разделив мир на сетку / квадри / / 1005 * октри и отклонив любой объект, который, как вы знаете, находится в пределах зоны, которую вы уже определили, в настоящее время невидимым), или чаще всего комбинацией обоих.