привязка слишком большого количества текстур (более 100) вызывает ошибку

У меня есть код, который отображает объекты в формате obj и mtl (android - opengl es 1.1) Для небольших объектов (мало текстур) у меня нет проблем, но когда количество текстур превышает 30-40, я получаю это в своем логарифме: eglLockWindowSurface failed для отображения памяти в... Я загружаю все текстуры в onSurfaceCreated, используя glBindTexture и texImage2D (все в один текстурный блок). И привяжите их для рисования в onDrawFrame

В чем проблема? Я искал часы, но не смог найти решения для этой ситуации, кроме атласа текстур. Поскольку моя компания предоставляет мне экспортные файлы blender/3dsmax, я не могу использовать этот подход. Как я могу избежать этой ошибки и работать со слишком большим количеством текстур?

Заранее спасибо.


person Alireza Farahani    schedule 07.12.2012    source источник
comment
Отдельные текстуры маленькие? Если нет, то почему вы подозреваете, что значение имеет число, а не просто общий размер доступной памяти текстур?   -  person Paul-Jan    schedule 07.12.2012
comment
@Paul-Jan Их размер варьируется от 1 КБ до 300 КБ (общий размер 5,12 МБ). когда я загружаю только первую четверть текстур, все в порядке, но для одной трети выдает ошибку, о которой я упоминал. Я догадался, может быть, это номер, который вызывает проблему.   -  person Alireza Farahani    schedule 07.12.2012
comment
@Paul-Jan Спасибо, чувак! Это был размер текстуры. Я уменьшил их масштаб. (ниже 4096 КБ), и мой код работал. Есть ли более эффективный способ загрузки текстур?   -  person Alireza Farahani    schedule 08.12.2012
comment
4096кб? Просто чтобы убедиться, что мы говорим о фактическом размере ширины * высоты * 4, а не о размере файла (= не имеет значения)?   -  person Paul-Jan    schedule 08.12.2012
comment
@ Пол-Ян Ооо! поэтому максимальный размер текстуры означает, что все параметры ширины * высоты * 4 текстур должны быть ниже константы, да? в любом случае мой код работает сейчас, спасибо.   -  person Alireza Farahani    schedule 08.12.2012
comment
Да и хорошо. Удачи с проектом!   -  person Paul-Jan    schedule 09.12.2012


Ответы (1)


единственным ограничением для загрузки и привязки текстуры является максимальный целочисленный размер! пределом был максимальный размер текстуры (зависит от устройства). Если максимальный размер текстуры составляет 4096 КБ, это означает, что вы не можете привязать изображение, ширина * высота * 4 которого больше 4096 000. (4 - размер с плавающей запятой). поэтому вы должны уменьшить изображение.

person Alireza Farahani    schedule 01.01.2013