Скорость работы программы независимо от скорости процессора.
Здравствуйте.
Всегда хотел узнать как в играх делают скорость движения людей, машин и т.п. одну и ту же независимо от скорости процессора (кроме случаев, конечно, когда скорость процессора меньше требуемой). Я делаю программу с прорисовкой простейшей графики - линии, буквы на форме, движение изображений по форме. Для паузы использую SLEEP. Но на других компах скорость программы другая (меньше), а так как мне нужно будет показывать эту программу на другом компе, то надо подгонять скорость под него а это геморой). Буквы видимо не вызывают проблем ни у кого из компов, везде скорость одинаковая. а вот постепенная прорисовка линий и движение изображений... В общем с помощью каких функций можно избежать этой зависимости? Мне так думается нужно подключать DirectX....? Простыми средствами VB этого не решить....
Спасибо.
А рисовать каждый кадр по таймеру не пробовал?
Когда делал медленное проявление рисунка с помощью AlphaBlend Lib "msimg32", мне необходимо было проявление рисунка от полной прозрачночти до отсутствия прозрачности = 1.5, 2 сек. Когда делаешь циклом с шагом 1, получается плавное проявление, но скорость зависила от размера изображения. Когда делал таймером, приходилось для достижения требуемой скорости проявки увеличивать шаг - и как следствие не плавное проявление, а моргание.
Хочу от этого избавиться. Надеюсь ясно изложил своё желание)
Цитата: Virtuoso
Конечно пробовал. Но таймер - это какая-то странная вещь. Допустим ставишь интервал 50 - работает, 40 - такая же скорость, - 30 такая же скорость, 15 - опа быстрее стало, 10 - также как и 15. Получается если я без таймера, в простом цикле передвигаю изображение с шагом в 5 точек, то в таймере с интервалом в 15 милисек. для достижения такой же зримой скорости нужно сделать шаг в 50. А тут уже получается видимое моргание картинки, а не плавное передвижение. (не обращайте внимание на числа, писал для примера).
Когда делал медленное проявление рисунка с помощью AlphaBlend Lib "msimg32", мне необходимо было проявление рисунка от полной прозрачночти до отсутствия прозрачности = 1.5, 2 сек. Когда делаешь циклом с шагом 1, получается плавное проявление, но скорость зависила от размера изображения. Когда делал таймером, приходилось для достижения требуемой скорости проявки увеличивать шаг - и как следствие не плавное проявление, а моргание.
Хочу от этого избавиться. Надеюсь ясно изложил своё желание)
Когда делал медленное проявление рисунка с помощью AlphaBlend Lib "msimg32", мне необходимо было проявление рисунка от полной прозрачночти до отсутствия прозрачности = 1.5, 2 сек. Когда делаешь циклом с шагом 1, получается плавное проявление, но скорость зависила от размера изображения. Когда делал таймером, приходилось для достижения требуемой скорости проявки увеличивать шаг - и как следствие не плавное проявление, а моргание.
Хочу от этого избавиться. Надеюсь ясно изложил своё желание)
двойная буферизация - естественно вам это надо будет перенести под басик.
А не проще ли просто поставить в True Form1->DoubleBuffed?
Спасибо, буду пробовать.
Цитата:
Но таймер - это какая-то странная вещь. Допустим ставишь интервал 50 - работает, 40 - такая же скорость, - 30 такая же скорость, 15 - опа быстрее стало, 10 - также как и 15.
Просто таймер не может генерировать больше 18-18.5 прерываний в секунду - а это и есть интервал около 50 мс. Меньше ставить просто нет смысла. Странно только то, что оно на 15 мс. работает быстрее.
Ну не знаю на счёт 18-ти... У меня 64 максимально.