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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.09.2010, 17:39
totto вне форума Посмотреть профиль Отправить личное сообщение для totto Найти все сообщения от totto
  № 11  
Ответить с цитированием
totto

Регистрация: May 2010
Адрес: 55.755786° с.ш. 37.617633° в.д.
Сообщений: 12
ничего не понял...
Умножаем на время, при котором не просядет фпс, и получаем время, при котором не просядет фпс. Это как?
Может имелось в виду что надо задать какое-то разумное время, а затем в каждом кадре если fpsRatio < 1, то время уменьшать, а если fpsRatio > 1, то увеличивать.
Только > 1 быть никак не может, так как targetFps вкомпиливается в swf и чаще рендер производиться не будет. Так что в итоге операции будут работать по пиковой загрузке (обеспеченной не только флешом, но и другими программами). Хотя конечно можно и при fpsRatio = 1 увеличивать... Тогда флешка по идее будет всегда работать при слегка присевшем фпс, но зато не будет больших проседаний.

Старый 14.09.2010, 17:43
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 12  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
Умножаем на время, при котором не просядет фпс, и получаем время, при котором не просядет фпс. Это как?
Прочитайте внимательнее.

Объясняю последний раз:
В самом начале у нас есть тормозная функция megaCalculation( timeLimit:uint ), которая принимает время в мс, которое она должна отпахать, и не более.
В самом начале у нас есть targetFps = 30
В самом начале у нас есть расчетное_время, скажем 33мс на кадр (из расчета 1000мс / 30фпс)
У нас есть счетчик фпс
Каждый кадр мы узнаем отношение fpsRatio как currentFps / targetFps
И после этого вызываем мегаТормозную функцию как megaCalculation( fpsRatio * расчетное_время )

расчетное_время - "Умножаем на время, при котором не просядет фпс"
fpsRatio - "Умножаем"
fpsRatio * расчетное_время - "и получаем время, при котором не просядет фпс"

Еще вопросы есть?


Последний раз редактировалось i.o.; 14.09.2010 в 18:05.
Старый 14.09.2010, 17:54
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 13  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
@totto
Есть такое событие Event.EXIT_FRAME - так что длительность текущего кадра можно считать по нему. Необходимую длительность кадра можно записать в констатнту. Соответственно, сравнить будет просто.
Далее, в обработчике ENTER_FRAME запоминаем, сколько собираемся сделать операций. Делаем операции. В EXIT_FRAME смотрим, не просел ли fps. Если просел - уменьшаем число операций для следующего ENTER_FRAME
__________________
...вселенская грусть

Старый 14.09.2010, 17:57
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 14  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
gloomyBrain, тот же самый счетчик фпс получается. Только с настоящим точнее, ибо он захватывает и время, за которое полностью рендерится кадр. А в твоем случае мы сможем узнать только время работы скриптов.


Последний раз редактировалось i.o.; 14.09.2010 в 18:03.
Старый 14.09.2010, 18:00
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 15  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Да я больше к тому, что как-то странно это - регистрировать несколько ENTER_FRAME с разными приоритетами
__________________
...вселенская грусть

Старый 14.09.2010, 18:02
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 16  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
Да я больше к тому, что как-то странно это - регистрировать несколько ENTER_FRAME с разными приоритетами
ну это да, правильно )

Старый 14.09.2010, 20:04
totto вне форума Посмотреть профиль Отправить личное сообщение для totto Найти все сообщения от totto
  № 17  
Ответить с цитированием
totto

Регистрация: May 2010
Адрес: 55.755786° с.ш. 37.617633° в.д.
Сообщений: 12
i.o.
Спасибо, теперь наконец-то понятно что Вы имели в виду.
Я думаю, что воспользуюсь таким подходом. Хотя мне кажется ориентироваться на жёстко задаваемую константу всё же не стоит, а лучше изменять это самое расчётное время в зависимости от проседания/не проседания fps.
В общем ещё раз спасибо.
gloomyBrain
EXIT_FRAME срабатывает сразу после ENTER_FRAME и до RENDER, так что разница между подпиской на ENTER_FRAME с низшим приоритетом и подпиской на EXIT_FRAME с практической точки зрения нет. Только разве что с точки зрения красоты кода.

Старый 14.09.2010, 20:19
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 18  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
Сообщение от totto Посмотреть сообщение
Хотя мне кажется ориентироваться на жёстко задаваемую константу всё же не стоит, а лучше изменять это самое расчётное время в зависимости от проседания/не проседания fps.
А вот это не советую делать. Это уже выполняется с помощью fpsRatio * расчетное_время.
Единственное что могу подсказать, так это высчитывать при запуске приложения максимально приемлимое время выполнения, при котором фпс чуть не проседает. Т.е высчитывать в самом начале расчетное_время. Потому что у всех компы разные, и если даже скрипт будет выполнятся ровно столько времени сколько ему отведете, то графика может не успевать отрисовываться за оставшееся время.
Поэтому советую запускать что-то вроде теста производительности на старте.

Старый 14.09.2010, 20:46
totto вне форума Посмотреть профиль Отправить личное сообщение для totto Найти все сообщения от totto
  № 19  
Ответить с цитированием
totto

Регистрация: May 2010
Адрес: 55.755786° с.ш. 37.617633° в.д.
Сообщений: 12
Я имел в виду, что вместо вызова
Код AS3:
megaCalculation(fpsRatio*time);
где time - это и есть то самое расчётное время
буду делать как-то так:
Код AS3:
if (fpsRatio < FPS_RATIO_MIN)
      time -= 1;
else if (fpsRatio > FPS_RATIO_MAX)
      time += 1;
megaCalculation(time);
Чем это плохо-то? Вообще конечно есть смысл реализовать оба варианта и протестировать.
Время на отрисовку графики зависит не только от производительности компа, но и от того сколько нужно перерисовать и сколько DisplayObject добавлено на сцену, поэтому как мне думается, тест производительности в самом начале может совершенно не отражать дальнейшей ситуации со скоростью отрисовки.

Старый 14.09.2010, 22:21
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 20  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
2 expl:
Отлично, ещё бы где-нибудь этот конвейер найти, так как все ссылки в поиске по этому форуму, да и просто в поисковике ведут на potapenko.com, где сейчас нет ничего, кроме предложения стать обладателем этого домена.
Вот это да Сайт Потапенко снесен, а в сети нет больше кода этого конвеера,
хотя что-то похожее народ делает (http://sheremetov.com/flash/flexunit-async/)
Забейте тогда, чтож поделаешь.

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

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

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


 


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


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