<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841748</guid>
        <pubDate>Wed, 04 Nov 2020 19:10:54 +0000</pubDate>
        <title>Контроль скорости игры</title>
        <link>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841748</link>
        <description><![CDATA[Eretic: &lt;cut&gt;<br>Проблема решилась написанием аналога BltFast().]]></description>
        <author>Eretic</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841515</guid>
        <pubDate>Sun, 01 Nov 2020 18:06:12 +0000</pubDate>
        <title>Контроль скорости игры</title>
        <link>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841515</link>
        <description><![CDATA[Gonarh: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=420496&view=findpost&p=3841491'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Eretic &#064; <time class="tag-quote__quoted-time" datetime="2020-11-01T07:39:31+00:00">01.11.20, 07:39</time></span><div class='quote '>Можно в двух словах о сути проблемы?</div></div><br>
<strong class='tag-b'>Mikle</strong> всё описал.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=420496&view=findpost&p=3841491'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Eretic &#064; <time class="tag-quote__quoted-time" datetime="2020-11-01T07:39:31+00:00">01.11.20, 07:39</time></span><div class='quote '>а что если для timeBeginPeriod() задавать интервал побольше. Скажем, для 60 fps можно задать 1000/60 = 16 мс. </div></div><br>
Емнип, 64 прерывания в секунду. Следовательно максимум 15,6. Вот <a class='tag-url' href='https://docs.microsoft.com/ru-ru/sysinternals/downloads/clockres' target='_blank'>струмент</a> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-11-01T18:14:48+00:00">01.11.20, 18:14</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=420496&view=findpost&p=3841491'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Eretic &#064; <time class="tag-quote__quoted-time" datetime="2020-11-01T07:39:31+00:00">01.11.20, 07:39</time></span><div class='quote '>Мне нужна совместимость с XP.</div></div><br>
А, струмент не поможет, он юзает GetSystemTimeAdjustment который появился в висте.]]></description>
        <author>Gonarh</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841510</guid>
        <pubDate>Sun, 01 Nov 2020 13:38:04 +0000</pubDate>
        <title>Контроль скорости игры</title>
        <link>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841510</link>
        <description><![CDATA[Eretic: Ясно. Бум пробовать :)]]></description>
        <author>Eretic</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841492</guid>
        <pubDate>Sun, 01 Nov 2020 08:34:18 +0000</pubDate>
        <title>Контроль скорости игры</title>
        <link>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841492</link>
        <description><![CDATA[Mikle: <strong class='tag-b'>Eretic</strong>, на сколько я понял из когда-то прочитанного, проблема в зависимости частоты QueryPerformanceFrequency() от тактовой частоты процессора. А последняя в современных процессорах может меняться в зависимости от нагрузки. То есть нужно каждый раз, опрашивая QueryPerformanceCounter(), опрашивать и QueryPerformanceFrequency(). И даже с таким алгоритмом результат замера, в течение которого произошла смена частоты, окажется немного неверным потому, что мы не знаем в какой именно момент между замерами произошла эта смена. Но эта ошибка всего на один замер.<br>
На практике - я много лет пользуюсь этим счётчиком, проверял на многих компьютерах, и мне не попадался случай, чтобы это произошло, то есть частота процессора менялась, а частота QueryPerformanceFrequency() оставалась прежней.]]></description>
        <author>Mikle</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841491</guid>
        <pubDate>Sun, 01 Nov 2020 07:39:31 +0000</pubDate>
        <title>Контроль скорости игры</title>
        <link>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841491</link>
        <description><![CDATA[Eretic: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=420496&view=findpost&p=3841470'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Gonarh &#064; <time class="tag-quote__quoted-time" datetime="2020-10-31T18:48:59+00:00">31.10.20, 18:48</time></span><div class='quote '>hpet?</div></div>Спасибо, но немного не то. Мне нужна совместимость с XP.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=420496&view=findpost&p=3841472'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Mikle &#064; <time class="tag-quote__quoted-time" datetime="2020-10-31T19:19:04+00:00">31.10.20, 19:19</time></span><div class='quote '>Для очень высокой точности можно использовать QueryPerformanceFrequency() и QueryPerformanceCounter() из &quot;kernel32&quot;.</div></div>Спасибо, попробую. <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=420496&view=findpost&p=3841477'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Gonarh &#064; <time class="tag-quote__quoted-time" datetime="2020-10-31T20:28:51+00:00">31.10.20, 20:28</time></span><div class='quote '>Емнип это rdtsc, а у него имеются известные проблемы c cpu perfomance scaling</div></div>Можно в двух словах о сути проблемы?<br>
<br>
-------------------------------------<br>
Тут вот подумалось, а что если для timeBeginPeriod() задавать интервал побольше. Скажем, для 60 fps можно задать 1000/60 = 16 мс. В связи с чем вопрос: какой интервал таймера точно будет работать на всех ОС? Что-то у микрософта плохо с описанием, этой функции.]]></description>
        <author>Eretic</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841477</guid>
        <pubDate>Sat, 31 Oct 2020 20:28:51 +0000</pubDate>
        <title>Контроль скорости игры</title>
        <link>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841477</link>
        <description><![CDATA[Gonarh: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=420496&view=findpost&p=3841472'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Mikle &#064; <time class="tag-quote__quoted-time" datetime="2020-10-31T19:19:04+00:00">31.10.20, 19:19</time></span><div class='quote '>Для очень высокой точности можно использовать QueryPerformanceFrequency() и QueryPerformanceCounter() из &quot;kernel32&quot;.</div></div><br>
Емнип это rdtsc, а у него имеются известные проблемы c cpu perfomance scaling]]></description>
        <author>Gonarh</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841472</guid>
        <pubDate>Sat, 31 Oct 2020 19:19:04 +0000</pubDate>
        <title>Контроль скорости игры</title>
        <link>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841472</link>
        <description><![CDATA[Mikle: Для очень высокой точности можно использовать QueryPerformanceFrequency() и QueryPerformanceCounter() из &quot;kernel32&quot;.]]></description>
        <author>Mikle</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841470</guid>
        <pubDate>Sat, 31 Oct 2020 18:48:59 +0000</pubDate>
        <title>Контроль скорости игры</title>
        <link>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841470</link>
        <description><![CDATA[Gonarh: hpet?]]></description>
        <author>Gonarh</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841468</guid>
        <pubDate>Sat, 31 Oct 2020 18:24:31 +0000</pubDate>
        <title>Контроль скорости игры</title>
        <link>https://forum.sources.ru/index.php?showtopic=420496&amp;view=findpost&amp;p=3841468</link>
        <description><![CDATA[Eretic: Сто лет не занимался игроделом. Сейчас создаю игру по мотивам старой игрушки с советского компьютера. Пишу под DirectX, а если точнее, то под DirectDraw.  Вплоть до Windows XP для контроля скорости хватало функции timeGetTime() и timeBeginPeriod() из модуля WINMM.DLL. Однако сейчас столкнулся с тем, что точность функции различается на разных ОС и железе. Если на XP можно задать частоту тиков в 1 мс, то под семеркой это уже не прокатит и частоту можно задать с точностью миллисекунд в пять. Да и под десяткой схожая картина.<br>Понимаю, что отстал от жизни. В связи с чем возник вопрос. А как сегодня контролируют скорость игры? Мне вот нужно установить фиксированные 40 или 60 fps. Однако, из-за различного поведения timeBeginPeriod() под различными ОС как то нет уверенности, что код отработает одинаково на всех ОС. <br>Пробовал через синхронизацию с вертикальной разверткой экрана, но оказалось, что это тоже работает не на всех системах. В частности, на ноуте с семеркой почему-то частота раза в два меньше чем на десктопном ПК, хотя в настройках стоят те же 60 герц.]]></description>
        <author>Eretic</author>
        <category>Программирование графики</category>
      </item>
	
      </channel>
      </rss>
	