Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.09.2016, 15:46
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 1  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
По умолчанию Выгрузка из VRAM #3691

Привествую, некоторые игроки стали жаловаться что иногда часть объектов в интерфейсе перестает отрисовываться.В лог, при попытке создания текстуры (100*100), идет ошибка
Код AS3:
Error #3691
\tat starling.textures::Texture$/empty()
\tat starling.textures::RenderTexture()
Подсчет суммарного размера текстур показывает в этот момент около ~64 мб, хотя по доке минимальный лимит 128 (игра браузерная) https://goo.gl/nD469K
Код AS3:
 
static public function get textureSize():int{
var size:int = 0;
var all:Vector.<Texture> = resources.getTextures();
for each(var texture:Texture in all)
size+= (getNextPowerOfTwo(texture.nativeWidth) * getNextPowerOfTwo(texture.nativeHeight));
return size;}
Все текстуры загружатся по мере необходимости, так что проблема воникает на долгих сессиях. Места где текстуры создаются програмно - контролируются и очищаются, так что проблема врядли в утечке. Теперь собственно сам вопрос, как я понял проверить свободную видеопамять возможности нет, и прийдется хранить все ATF в памяти, и постоянно их пересоздавать в vRAM, насколько это рабочий подход, и как еще можно предотвратить возникновение этой ошибки?

Старый 01.10.2016, 16:37
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
У тебя там RenderTexture используется?
Недавно у меня с ней был баг, который мне чуть мозг не взорвал. А проблема оказлась простая.
В общем, суть была в том, что на разных устройствах разные размеры допустимой текстуры. У меня нормально тестировалась игра на компе, но при загрузке на телефон висла в процессе загрузки уровня. Подключил отладчик, и увидел проблему в том, что рендер текстура такого размера на телефоне не поддерживалась, хотя комп ее тянул.
Я не говорю, что у тебя такая же проблема, но факт в том, что эти показатели не фиксированы, и могут варьироваться от устройства к устройству. Вполне может быть что на одном девайсе 128 мегабайт под текстуры, а на другом меньше 60. Так, информация к размышлению
__________________
Ко мне можно и нужно обращаться на ты)

Старый 04.10.2016, 12:29
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 3  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
Render Texture используется только на аватарках 100*100, так что врядли их лимит. и игра браузерная, поэтому 128 мб должно быть фиксировано. Пока проблему решить так и не удалось..

Старый 04.10.2016, 13:03
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
поэтому 128 мб должно быть фиксировано
А может у юзер в момент запуска игры уже меньше памяти осталось?
__________________
Ко мне можно и нужно обращаться на ты)

Старый 04.10.2016, 15:36
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 5  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
ну да, в принципе с памятью любая ситуация может быть, но вылет фиксировано на 50-60 мб. Получается нет никакой возможности предотвратить это - не зная сколько свободной памяти, надо оборачивать в try и то не факт что заработает

Старый 28.10.2016, 15:08
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 6  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
Как я понял - не правильно считал размер текстур, там надо width*height домножать еще на 4

Старый 29.10.2016, 01:31
ShockWave512 вне форума Посмотреть профиль Отправить личное сообщение для ShockWave512 Посетить домашнюю страницу ShockWave512 Найти все сообщения от ShockWave512
  № 7  
Ответить с цитированием
ShockWave512

Регистрация: Dec 2007
Адрес: NA
Сообщений: 741
Отправить сообщение для ShockWave512 с помощью Skype™
Со сжатием текстур вообще не угадаешь точно по размеру. По умолчанию вроде как включено.
Посмотри сколько "подымает" vram-мы при старте игры, например GPU-Z позволяет на графике глянуть.

Старый 29.10.2016, 23:12
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 8  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
проблему решил обнулением всех текстур при исключении, и последующим их восстановлением по мере показа.
Код AS3:
		public static function checkVram(width:int, height:int):Boolean{
			try{
				var check:Texture = Texture.fromColor(width, height);
				check.dispose();
				return true;
			}catch (e:Error){
 
			}
			return false;
		}

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:18.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:18.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.