[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Spidy, blitz3d  
Форум мира Blitz3D » Язык Blitz3D » 2D программирование » Как заставить блиц работать быстрее? (проблема с FPS)
Как заставить блиц работать быстрее?
SquallДата: Суббота, 01.05.2010, 17:32 | Сообщение # 1
ламер
Группа: Пользователи
Сообщений: 5
Награды: 0
Репутация: 0
Статус: Offline
Мне надо сделать казалось бы простую вещь: вывести на экран пару-тройку сотен линий командой Line за один цикл и перерисовывать их по новой как можно быстрее, опять же тратя по одному циклу.
Использование Backbuffer() помогает, но когда линий становится больше ста начинаются "тормоза". Как нормализовать FPS? Или Backbuffer тут не поможет?


Сообщение отредактировал Squall - Суббота, 01.05.2010, 17:33
 
SpidyДата: Суббота, 01.05.2010, 20:30 | Сообщение # 2
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
В принципе и 1000 линий не должны сильно грузить систему. У меня 1000 линий стабильно выдают 58-60FPS на ноуте с урезанной видяхой. Возможно, у тебя что-то не оптимизировано в коде либо логика ест все ресурсы.

Сколько у тебя FPS выдает следующий пример:

Code

Graphics 800,600,2
SetBuffer BackBuffer()

Const UPS=60

period=1000/UPS
time=MilliSecs()-period

SetFont LoadFont("courier",20)

    Repeat

    Cls

       GAME_FRAME=GAME_FRAME+1
       If a<MilliSecs()-1000
     a=MilliSecs() : GAME_FPS=GAME_FRAME : FPS = GAME_FRAME : GAME_FRAME=0
           EndIf

      For h = 1 To 1000
   Color Rnd(1,255),Rnd(1,255),Rnd(1,255)
   Line 400,300,Rnd(0,800),Rnd(0,600)
         Next

   Color 255,255,255
   Text 10,10,"FPS: "+FPS

        Flip 1
    
    Until KeyHit(1)
     
EndGraphics
End

P.S. Попробуй еще с синхронизацией и без т.е. поставить Flip 0


Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
 
SquallДата: Суббота, 01.05.2010, 21:04 | Сообщение # 3
ламер
Группа: Пользователи
Сообщений: 5
Награды: 0
Репутация: 0
Статус: Offline
В обоих случаях (с синхронизацией и без) выдает приблизительно 20 FPS при запуске в окне, фуллскрин вообще 1.
С оконным режимом проще, там FPS в разы выше(70+), а мне бы сделать так, чтобы и в фуллскрин можно было нормально запускать. Хотя бы 1024х768, чтобы не тормозило (FPS хотя бы 30-40). Начиная со ста линий FPS падает ниже 10.
У меня версия блица 1.98.

PS Spidy, спасибо что ответил =)

 
SpidyДата: Суббота, 01.05.2010, 21:23 | Сообщение # 4
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
Могу посоветывать либо заниматься оптимизацией (хотя ХЗ что тут можно придумать, не выводить каждый раз линию?) или апгрейдить систему. Второе вероятнее.

Quote
Начиная со ста линий FPS падает ниже 10

что-то не вяжется, ты же писал, что в моем примере с 1000-ю линиями у тебя было 20 FPS

Quote
при запуске в окне, фуллскрин вообще 1

еще могу посоветовать понизить color depth до 16 - это может спасти пару FPS

Code
Graphics 1024,768,16,0

плюс вырубай все программы в т.ч. winamp из-за которого возможны тормоза


Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
 
SquallДата: Суббота, 01.05.2010, 23:37 | Сообщение # 5
ламер
Группа: Пользователи
Сообщений: 5
Награды: 0
Репутация: 0
Статус: Offline
Я писал, что при запуске в окне все нормально с сотней линий. Если уж с тысячью 20 FPS smile
Проблема только в фуллскрине...это там со ста линий FPS меньше 10. Все программы вырубал, но толку мало. Система у меня неплохая (380+ видеопамять, 2 гига оперативы, двухъядерник). Придется обойтись без фулскрина наверное (color depth менял). В чем самая ирония: все проблемы с блицем, которые когда-либо возникали, были изза сложности оптимизации FPS и редко удавалось их полностью решать.

Spidy у тебя в фулскрине сколько FPS выдают 100 и 200 линий?

 
SpidyДата: Вторник, 04.05.2010, 22:38 | Сообщение # 6
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
Graphics 1024,768,32,1
1000 линий

обычный экран - 58-60 FPS
в полноэкранном - 58-60 FPS

Если линий на пару сот больше FPS cущественно падают


Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
 
SquallДата: Среда, 05.05.2010, 15:08 | Сообщение # 7
ламер
Группа: Пользователи
Сообщений: 5
Награды: 0
Репутация: 0
Статус: Offline
Spidy, какая у тебя версия блица? Может есть какойнибудь патч на отрисовку?

Чтобы я ни делал в фуллскрине всеравно лажа =( Из-за чего вообще может быть настолько большая разница в этих режимах?

 
SpidyДата: Среда, 05.05.2010, 15:53 | Сообщение # 8
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
Советую тебе придумать что-то другое вместо линий. Всетаки скорее всего комп загибается от такой нагрузки ( нужно проверить на каком-нибудь другом ). Версия блица тут не причем. Ты хоть скажи зачем тебе такая каша на экране.

Кстати, может тебе поможет. Горизонтальные линии едят намного меньше ресурсов, чем вертикальные. Например, следующий пример из 1024 линий выдает у меня в фуллскрине 92-94 FPS без синхронизации

Code


Graphics 1024,768,16,1
SetBuffer BackBuffer()

Const UPS=60

period=1000/UPS
time=MilliSecs()-period

SetFont LoadFont("courier",20)

    Repeat

    Cls

       GAME_FRAME=GAME_FRAME+1
       If a<MilliSecs()-1000
     a=MilliSecs() : GAME_FPS=GAME_FRAME : FPS = GAME_FRAME : GAME_FRAME=0
           EndIf

      For h = 1 To GraphicsWidth()
   Color Rnd(1,255),Rnd(1,255),Rnd(1,255)
   ;Line h,0,h,GraphicsHeight ()
   Line 0,h,GraphicsWidth(),h
         Next

   Color 255,255,255
   Text 10,10,"FPS: "+FPS

        Flip 0
    
    Until KeyHit(1)
     
EndGraphics
End


Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
 
blitz3dДата: Среда, 05.05.2010, 15:55 | Сообщение # 9
Admin
Группа: Администраторы
Сообщений: 203
Награды: 3
Репутация: 7
Статус: Offline
Squall, попробуй обновить видеодрайвер для своей видяхи

перед тобой две таблетки - красная и синяя - какую ты выберешь?
 
SquallДата: Среда, 05.05.2010, 21:24 | Сообщение # 10
ламер
Группа: Пользователи
Сообщений: 5
Награды: 0
Репутация: 0
Статус: Offline
Spidy, мне нужно как-то сделать наполнение емкости (не одной) жидкостью. Емкость неровная, так что Rect не прокатит. Линии все должны быть горизонтальные (в идеале, не до конца дописал еще smile ).

blitz3d, попробую, спс за совет.

Сообщение отредактировал Squall - Среда, 05.05.2010, 21:25
 
Форум мира Blitz3D » Язык Blitz3D » 2D программирование » Как заставить блиц работать быстрее? (проблема с FPS)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: