<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>How to use QPC</title>
		<link>http://www.allegro.cc/forums/view/591408</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 16 May 2007 06:11:13 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ve been wanting to use QueryPerformanceCounter for quite some time, and I checked out the Microsoft documentation hoping to find out everything I need to know, but what I found was a bunch of Windows code that didn&#39;t make an ounce of sense. <br />So I guess I need a little help with figuring out how to use QPC with Allegro.<br />  <br />Just so I don&#39;t get scolded for not trying to figure it out myself, I&#39;m a busy high schooler who barely has any free time, and I&#39;m used to reading the Allegro docs, which I find very easy to understand, but the Microsoft docs on the other hand...<br />Anyway, sorry to pester you all with a dumb question, but I really need help.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Road Runner)</author>
		<pubDate>Wed, 16 May 2007 03:11:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><a href="http://www.allegro.cc/forums/thread/586268/596184#target">Take a look at R. Phipps&#39; timer.</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Paul whoknows)</author>
		<pubDate>Wed, 16 May 2007 05:23:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks, that looks good.  I think that&#39;s all I really need, but I&#39;m new at programming so I really want to understand how to use QPC myself, so that I can wrap it in whatever code I want. Maybe I should have been more specific in the first place. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Road Runner)</author>
		<pubDate>Wed, 16 May 2007 06:06:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#define WIN_ANIME_TIMERLOOP  0x7fffffffffffffffLL</span></td></tr><tr><td class="number">2</td><td>__int64   animation_timer<span class="k2">;</span></td></tr><tr><td class="number">3</td><td>__int64   frequency<span class="k2">;</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td>__int64   WinGetAnimationTime<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span> <span class="k1">return</span> animation_timer<span class="k2">;</span> <span class="k2">}</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="k1">void</span> WinInstallAnimationTimer<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">8</td><td><span class="k2">{</span></td></tr><tr><td class="number">9</td><td>   QueryPerformanceFrequency<span class="k2">(</span><span class="k2">(</span> LARGE_INTEGER<span class="k3">*</span> <span class="k2">)</span><span class="k3">&amp;</span>frequency<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>   <span class="c">// (higher == faster, lower == slower)</span></td></tr><tr><td class="number">11</td><td>   frequency <span class="k3">/</span><span class="k3">=</span> <span class="n">500</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>   QueryPerformanceCounter<span class="k2">(</span><span class="k2">(</span> LARGE_INTEGER<span class="k3">*</span> <span class="k2">)</span><span class="k3">&amp;</span>animation_timer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>   animation_timer <span class="k3">/</span><span class="k3">=</span> frequency<span class="k2">;</span></td></tr><tr><td class="number">14</td><td><span class="k2">}</span></td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td><span class="k1">void</span> WinUpdateAnimationTimer<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">17</td><td><span class="k2">{</span></td></tr><tr><td class="number">18</td><td>   QueryPerformanceCounter<span class="k2">(</span><span class="k2">(</span> LARGE_INTEGER<span class="k3">*</span> <span class="k2">)</span><span class="k3">&amp;</span>animation_timer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>   animation_timer <span class="k3">/</span><span class="k3">=</span> frequency<span class="k2">;</span></td></tr><tr><td class="number">20</td><td><span class="k2">}</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td>__int64 WinGetRelativeAnimationTime<span class="k2">(</span>__int64<span class="k3">&amp;</span> oldtime<span class="k2">)</span></td></tr><tr><td class="number">23</td><td><span class="k2">{</span></td></tr><tr><td class="number">24</td><td>   __int64 t <span class="k3">=</span> oldtime<span class="k2">;</span></td></tr><tr><td class="number">25</td><td>   oldtime <span class="k3">=</span> animation_timer<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>   <span class="k1">if</span><span class="k2">(</span>t <span class="k3">&gt;</span> oldtime<span class="k2">)</span></td></tr><tr><td class="number">28</td><td>      <span class="k1">return</span> <span class="k2">(</span><span class="k2">(</span>WIN_ANIME_TIMERLOOP <span class="k3">-</span> t<span class="k2">)</span> <span class="k3">+</span> oldtime<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>   <span class="k1">else</span></td></tr><tr><td class="number">30</td><td>      <span class="k1">return</span> <span class="k2">(</span>oldtime <span class="k3">-</span> t<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
That&#39;s more or less how I use it. Shouldn&#39;t be hard to decipher. Basically just use QueryPerformanceFrequency() and QueryPerformanceCounter() to make it track the same speed on all systems, and reference it for all your timing needs.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (23yrold3yrold)</author>
		<pubDate>Wed, 16 May 2007 06:08:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ll just use it until I understand how it works then, and yeah, it&#39;s pretty simple code, so it shouldn&#39;t take long for me to decipher it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Road Runner)</author>
		<pubDate>Wed, 16 May 2007 06:11:13 +0000</pubDate>
	</item>
</rss>
