Я портирую компьютерную игру на iPad с тоннами графических ресурсов (более 250 МБ), и я на полпути.До сих пор у меня не было iPad, поэтому я тестировал его только на симуляторе, и все было хорошо.Но когда я запускаю его на устройстве в первый раз, он завис.Все, что я получил от консоли, это
Program received signal: “0”.
Data Formatters temporarily unavailable, will re-try after a 'continue'. (Unknown error loading shared library "/Developer/usr/lib/libXcodeDebuggerSupport.dylib")
, при запуске также появляется предупреждение, которого у меня не было на симуляторе, и я не знаю, что это значит или еслиэто связано:
warning: Unable to read symbols for "/Developer/Platforms/iPhoneOS.platform/DeviceSupport/3.2/Symbols/System/Library/AccessibilityBundles/AccessibilitySettingsLoader.bundle/AccessibilitySettingsLoader" (file not found).
Мне удалось определить, что игра вылетает при загрузке текстур, в большинстве случаев при
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, imageData);
Я использую стандартную загрузку текстур из образцов, и это сработалопока отлично.По моим оценкам, во время аварии я выделил несколько текстур на несколько десятков мегабайт (сейчас я не могу дать вам точное число).
Я не эксперт ни в чем, но, похоже, мне не хватает памяти, хотя я не получаю никаких предупреждений о памяти (я проверяю их).Возможно ли, что я выделяю больше памяти, чем могу, и происходит сбой, прежде чем он может выдать предупреждение памяти?Что меня больше всего удивляет, так это то, что он не бросает исключения или что-то еще, он просто умирает от меня.Даже отладчик ничего мне не говорит.
Есть еще идеи, что может вызвать этот сбой?
И еще одна вещь, я знаю, что об этом спрашивали бесчисленное количество раз раньше, но, похоже, никтоесть хороший ответ на это.Я все равно попробую спросить :) Сколько МБ памяти я могу получить для своего приложения?Есть ли гарантированный минимум или теоретический (но все же достижимый :)) максимум?Есть ли способ, как обеспечить мне достаточно памяти?
В игре много причудливой художественной графики, и хотя я использую кеширование и выпускаю текстуры, которые в настоящее время не используются, все равно будет несколько десятковмб текстур, необходимых за один раз.Возможно ли что-то подобное?Как профессиональные игры обрабатывают много данных?Любая статья будет принята с благодарностью.