PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Замедленная реакция на движение мышью, input lag


Замедленная реакция на движение мышью, input lag

Сообщений 1 страница 9 из 9

1

Здравствуйте, только начал присматриваться к PB, и тут возник неприятный момент. Лагает отклик мыши. Мерцание - пол беды. Оно отзывается с паузой. Как на нагруженных графикой 3d сценах в играх.

Код:
InitSprite() 
InitMouse() 

 InitKeyboard()

OpenScreen(800,600,32,"") 

Repeat 
  ClearScreen(RGB(0,0,0))

StartDrawing(ScreenOutput()) 
    Circle(MouseX(),MouseY(),2,RGB(0,255,255)) 
    StopDrawing() 
    
      ExamineMouse()
ExamineKeyboard()
    
    FlipBuffers() 
    
    
    Until KeyboardPushed(#PB_Key_Escape)

Буду рад помощи. Заранее спасибо!

0

2

Ewo написал(а):

Оно отзывается с паузой

Какова длительность паузы? У меня работает нормально.

0

3

Все началось с того, что взял примеры с ВК группы PureBasic, в частности, тот что в архиве

https://yadi.sk/d/BeA0XXjXtejxE

Пробовал разное: spritecollision заменял на обычное сравнение по координатам, "прыти" в отслеживании мыши не добавило.
Менял битность, вставлял setframerate, delay'и.

Позже произвел вычистку кода и заменил спрайт на кружок (у кружка если сделать радиус 10 вместо 2, становится более заметно).

Надеюсь, тот пример, что в архиве, у вас все же лагает.

Отредактировано Ewo (26.07.2016 22:26:31)

0

4

По примеру с кружком (в первом посте + выставьте пжлст радиус 10 для большей заметности лага и/или мерцания) - под какой ОС вы тестировали пример?

Я вчера к жуткому наблюдению пришел - на ХР что на навесной видео (нвидиа), что на интегрированной, мерцания и замедленной реакции на движ. мышью НЕТ, на Вин7х64 навесная видео нвидиа- мерцание и лаг есть, выставление режмов совместимости не меняет картину.

Теперь рассмотрим пример "Перемещение спрайта мышкой" (само перемещение не рассматриваю, речь только об отзывчивости курсора мыши)

- вин7х64 навесная видео - задержка в отклике
- винХР интегрированное видео - все ок, т.е. движение спрайтового указателя происходит точно так же, как если бы это был рабочий стол и обычный курсор мыши
- винХР навесная видео - неожиданно - здесь курсор вообще местами залипает, порой просто игнорируя движение мышью

Какие у вас наблюдения?

Буду очень благодарен за помощь. Вроде ЯП прекрасный, и в отл. от FreeBasic может многие вещи "из коробки" (вывод TrueType, работа с изображениями, без "костылей", как и подобает в ЯП для людей), но - неожиданные такие "приколы" мягко говоря, напрягают.

Оконный режим не нужен, хочу именно в fullscreen (планируется делать игру).

Может дело в частоте опроса мыши, ??

Отредактировано Ewo (27.07.2016 10:12:05)

0

5

Если проблема проявляется только на некоторых компах, то возможно дело в них. Может драйвера или DX нужно обновить.

Ewo написал(а):

Надеюсь, тот пример, что в архиве, у вас все же лагает.

Нет, спрайты перемещаются плавно. Там используется DX7. Нужно в настройках компилятора очистить поле "Библиотека подсистемы" чтобы использовался DX9 или вписать туда DirectX11 чтобы использовался DX11.

Спрайт тоже перемещается с задержкой?

Код:
InitSprite() 
InitMouse() 

InitKeyboard()

OpenScreen(800,600,32,"") 

CreateSprite(0, 20, 20)
If StartDrawing(SpriteOutput(0))
  Circle(10, 10, 2, RGB(0,255,255)) 
  StopDrawing() 
EndIf

Repeat
  
  
  ClearScreen(RGB(0,0,0))
  
  
  ExamineMouse()
  DisplaySprite(0, MouseX(),MouseY())
  
  
  FlipBuffers()
   
  ExamineKeyboard()
  
Until KeyboardPushed(#PB_Key_Escape)

0

6

Да, спрайт также перемещается с задержкой. Но мерцания уже нет.

Установка DirectX11 в Sybsystem ничего не меняет, только растягивает графический вывод до физически полного экрана - по умолчанию на ноуте 17' FullHD экран, 800*600 не растягивается на полный экран.

Изначально примеры компилил в РВ 4.51 x32, попытки компиляций на PB5.5 x32 и x64 только увеличивают размер EXE, суть та же - явный лаг.

Сейчас попробую на другом ноуте на Вин10-64,

- на другом ноуте примеры с разной разрядностью точно так же тупят; пример с DX11 не запустился, там интегрированное Intel HD Graphics

Отредактировано Ewo (27.07.2016 12:53:40)

0

7

http://www.tomshardware.co.uk/forum/161 … ayed-games

http://s8.uploads.ru/t/KyWZ6.png

Т.е. там где "вкл", нужно делать "выкл". Это - что касается лагов мыши.

Что касается мерцания, оно есть в примерах, где я вручную рисую кружок; в вашем примере со спрайтом, в который отрисован круг, мерцания нет.

Вот такие пироги.  Спасибо за участие!

Синхронизацию лучше выключить совсем, в глобальных настройках.

Отредактировано Ewo (27.07.2016 14:44:35)

0

8

Выключить вертикальную синхронизацию можно из приложения, если это действительно нужно.

Код:
InitSprite() 
InitMouse() 

InitKeyboard()

OpenScreen(800,600,32,"", #PB_Screen_NoSynchronization)

SetFrameRate(120)

Repeat 
  ClearScreen(RGB(0,0,0))
  
  StartDrawing(ScreenOutput()) 
  Circle(MouseX(),MouseY(),2,RGB(0,255,255)) 
  StopDrawing() 
  
  ExamineMouse()
  ExamineKeyboard()
  
  FlipBuffers() 
Until KeyboardPushed(#PB_Key_Escape)

0

9

Благодарю, не увидел эту опцию в хелпе. Но в моей системе, похоже, это не влияет никак. Только через настройки Нвидиа есть изменения.

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Замедленная реакция на движение мышью, input lag