![]() |
Ответ: Дельта тайминг
Цитата:
|
Ответ: Дельта тайминг
Код:
ЧТо делаю не так? |
Ответ: Дельта тайминг
Ндэ...
Давай вместе разберм твой код и посмеёмся. Код:
Global FPSTime,FPSCount,FPSCountTemp Код:
Global FPSTime%,FPSCount%,FPSCountTemp% Код:
delta# = 60.0 / FPSCount Что будет если разделить любое число на ноль? Правильно, получится бесконечность... т.к. в любом числе бесконечное число такого мелкого числа как ноль. Вопрос знатакам: зачем мы в главном цикле каждый раз вызываем функцию Init_Count_FPS()? Правильно: чтобы узнать текущий фпс, ведь условия меняются и фпс надо считать постоянно. Так какого %$#@! мы дельтатайм то считаем в самом начале, а не сразу после вызова функции Init_Count_FPS()? Теперь инструкция: строку delta# = 60.0 / FPSCount перенести в новое место сразу после строки Init_Count_FPS() и перед Flip Серьёзно, нужно как то уметь "читать" свой код. |
Ответ: Дельта тайминг
Unodeya
deltatime должна высчитыватся каждый кадр |
Ответ: Дельта тайминг
Ты главное не переживай, все когда-то начинали, не у всех гладко было с перенаправлением мозга на программирование с обычного мышления. Давай разбираться вместе... Сейчас я пошагово разберу твой код и покажу, где ошибки, и как с ними справиться. Поехали:
Код:
Global FPSTime,FPSCount,FPSCountTemp Код:
delta# = 60.0 / FPSCount Но ты поставил дельту до главного цикла. Окей, если еще не понятно, о чем я, давай пройдемся по значениям переменных: Первая строчка кода - объявлены FPSTime,FPSCount,FPSCountTemp, все они равны 0 Вторая строчка кода - ты заводишь дельту, и даешь ей значение 60/0 Поехали дальше Код:
Graphics3D 1024,768,32,2 А дальше идет твой главный цикл: Код:
Repeat Код:
Init_Count_FPS() Давай немножко отойдем в сторону от темы и подумаем, как в общих чертах должна работать программа: <инициализация> <вход в цикл> <тело главного цикла> <выход из цикла> <функции> Вот в общих чертах и все. Инициализация - это создание условий для запуска главного цикла, т.е. создание глобальных переменных, присвоение им _начальных_ (обрати на это, пожалуйста, внимание) значений, создание объектов, которые нужны будут на протяжение всей игры (например, камера, свет), вызова функций, которые должны быть вызваны до запуска главного цикла (например, у меня такая есть - запускает создание игровых объектов) В теле главного цикла происходит основная жизнь программы, то, что ты видишь на экране (или не видишь, если твоя программа не должна ничего выводить). Естественно, конструкция цикла применяется не всегда, а только в тех случаях, когда необходимо многочисленное или постоянное до соблюдения каких-либо условий выполнение какого-либо блока программы. В твоем случае таким блоком является сочетание логика + отрисовка. Важно понять одну вещь: компьютер делает не то, что ты хочешь, чтобы он сделал, а то, что ты ему скажешь сделать. Если ты хочешь, чтобы изменилось значение переменной - напиши правило, по которому оно должно измениться, и напиши его там, где она должна измениться... Еще важно тут то, что главный цикл выполняется как и любая программа, строчка за строчкой, и пока очередь выполнения не дойдет до какого-либо строки, код этой строки НЕ ВЫПОЛНИТСЯ. Ну, что такое функция ты похоже в общих чертах понимаешь. Ну и напоследок, какую же ошибку ты допустил? Ошибка заключается в том, что ты нигде в главном цикле не изменил свою дельту П.С. Постарался без рыбы, только удочками.. П.П.С. А, черт, опоздал... |
Ответ: Дельта тайминг
Ize'g0re +1 за розжовку материала новичку.
(судя по количеству сообщений,последние самое адское за всю истороию) |
Ответ: Дельта тайминг
Всем большое спасибо! В особенности: SBJoker,Ize'g0re,Jimon!
|
Ответ: Дельта тайминг
Цитата:
Код:
Global FPSTime%,FPSCount%,FPSCountTemp% |
Ответ: Дельта тайминг
фантастика !
интересно почему так Код:
Global FPSTime%=MilliSecs(),FPSCount%=60,FPSCountTemp% |
Ответ: Дельта тайминг
Спасибо.. Почему тогда когда я ставилю Flip 0 всё равно всё двигается быстро....
|
Ответ: Дельта тайминг
Цитата:
Форум это место где на добровольных началах люди помогают друг другу. Количество и качество помощи обычно зависит от правильно поставленого вопроса автором (конкретность, ясность), от уровня его притязаний на помощь форумчан (от простого вопроса до "напишите за меня программу".) ну и от уже заработаного авторитета на форуме. Несекрет что особенно наглых запоминают и игнорируют темы с их авторством. Поэтому если хотите получить конкретный ответ на свой вопрос в этом столетии, задавайте его в правильной ветке форума, с подробным описанием проблемы и приведением проблемного куска кода объёмом не более 10-20 строк(это условно, но "много букаф" отпугивают). Готовые решения алгоритмов ищите сами в соотв. ветках форума. Или на специализированых сайтах где вам за адекватное вознаграждение напишут что угодно. |
Ответ: Дельта тайминг
Цитата:
|
Ответ: Дельта тайминг
почему почти все темы с вопросом по программированию заканчиваются именно так ?
|
Ответ: Дельта тайминг
Помогите пожалуйста, если убераю VSync(Flip 0) что = Увелечение FPS, то дельта не работает.. В чём проблема?Заранее спасибо.
|
Ответ: Дельта тайминг
почитай, всё что есть в посте #2 этой темы - многое должно прояснится
|
Часовой пояс GMT +4, время: 05:22. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot