1) Вы должны выделить столько имен текстур, сколько вам нужно. Один для каждой текстуры, которую вы используете.
Загрузка текстуры - очень тяжелая операция, которая останавливает конвейер рендеринга. Таким образом, вы никогда не должны загружать текстуры внутри игрового цикла. У вас должно быть состояние загрузки до состояния приложения, в котором вы визуализируете текстуры. Состояние загрузки отвечает за загрузку всех текстур, необходимых для рендеринга. Поэтому, когда вам нужно визуализировать вашу геометрию, у вас будут загружены все текстуры, и вам больше не придется об этом беспокоиться.
Обратите внимание, что после того, как вам больше не нужны текстуры, вы должны удалить их, используя glDeleteTextures.
2) Если вы подразумеваете под выводом, что вам нужны разные текстуры для разных уровней или что-то похожее, то вы должны обработать данные уровней в состоянии загрузки и решить, какие текстуры нужно загрузить.
С другой стороны, если вам нужно рисовать текст (например, текущий счет), то в OpenGL все становится сложнее. У вас будут следующие опции: предварительно отобразить необходимый текст в текстурах (легко), реализовать собственный движок растровых шрифтов (сложнее) или использовать пару растровых изображений и холста для создания текстур на лету (медленно).
Если у вас ограниченный набор сообщений, которые будут отображаться во время игры, я бы, скорее всего, перенес их на текстуры, так как реализация довольно тривиальна.
Для текущего счета достаточно иметь текстуру с глифом для чисел от 0 до 9 и использовать ее для отображения произвольных значений. Реализация будет довольно простой.
Если вам нужны более длинные локализованные тексты, вам нужно задуматься о создании текстур на лету. По сути, вы бы создали растровое изображение, в которое вы визуализируете текст, используя Canvas. Затем вы загружаете его как текстуру и визуализируете как любую другую текстуру. Если он вам больше не нужен, вы можете удалить его. Эта опция медленная и ее следует избегать внутри цикла приложения.
3) Что касается текстур и получения максимальной отдачи от графического процессора, вы должны помнить, по крайней мере, о следующих вещах (эти вещи станут более продвинутыми, и вы должны заниматься ими только после запуска приложения). и работает, и если вам нужно оптимизировать частоту кадров):
- Минимизируйте изменения текстуры, так как это медленная операция. Оптимально вы должны визуализировать все объекты, используя одну и ту же текстуру в пакете. Затем измените текстуру и визуализируйте объекты.
нуждаюсь в этом и т. д.
- Использование текстурных атласов для минимизации количества текстур (и изменений текстур)
- Если у вас много текстур, вам может понадобиться использовать битовую глубину, отличную от 8888, чтобы все ваши текстуры поместились в память. Использование более низких битовых глубин также может улучшить производительность.