При застосуванні декількох текстур до сітки, як-от для купірування карти, я зазвичай прив'язую текстури до перших декількох фіксованих одиниць текстури, наприклад: дифузний = одиниця 0, удар = одиниця 1, окуляр = одиниця 2, потім продовжую повторно використовувати їх для кожного різні сітки з різними текстурами. Але я завжди цікавився, чому glActiveTexture
підтримує стільки одиниць текстури (у попередньому посиланні написано щонайменше 80).
Тому мені спало на думку, що один із можливих способів управління текстурами - прив’язати різні текстури до кожної наявної одиниці та залишити їх увімкненими, лише оновивши єдиний індекс вибірки. Це повинно покращити рендерінг за рахунок зменшення кількості перемикань текстур. Якщо у вас менше текстур, ніж максимальна одиниця текстури, вам ніколи не потрібно буде відкручувати текстуру.
Чи є ця стандартна практика для програм OpenGL в режимі реального часу (я вважаю, що це стосується і D3D)? Чи є якісь очевидні наслідки для продуктивності цього підходу? Можливо, пам'ять накладні?