<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Flicker with Fullscreen</title>
		<link>http://www.allegro.cc/forums/view/554880</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 22 Dec 2005 23:33:50 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>First, heres my draw code:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>    <span class="c">//DRAW DISPLAY</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td>    <span class="c">// clear dblBuff and lock the screen (not sure what the purpose is yet, though :P)</span></td></tr><tr><td class="number">4</td><td>    <a href="http://www.allegro.cc/manual/acquire_screen" target="_blank"><span class="a">acquire_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>    clear<span class="k2">(</span>dblBuff<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>&#160;</td></tr><tr><td class="number">8</td><td>    <span class="c">// Draw the snow, shifted by scroll.  Two blits.</span></td></tr><tr><td class="number">9</td><td>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>landscape, dblBuff, scroll, <span class="n">0</span>, <span class="n">0</span>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a> <span class="k3">-</span> landscape-&gt;h, landscape-&gt;w <span class="k3">-</span> scroll, landscape-&gt;h<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>landscape, dblBuff, <span class="n">0</span>, <span class="n">0</span>, landscape-&gt;w <span class="k3">-</span> scroll, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a> <span class="k3">-</span> landscape-&gt;h, scroll, landscape-&gt;h<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>    <span class="c">// Draw all the background snowflakes</span></td></tr><tr><td class="number">13</td><td>    <span class="k1">for</span><span class="k2">(</span> std::vector<span class="k3">&lt;</span>SFlake <span class="k3">*</span><span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator iter <span class="k3">=</span> BackFlakes.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>      iter <span class="k3">!</span><span class="k3">=</span> BackFlakes.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> iter<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">15</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">16</td><td>      <span class="k2">(</span><span class="k3">*</span>iter<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Draw<span class="k2">(</span>dblBuff<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>&#160;</td></tr><tr><td class="number">19</td><td>    <span class="c">// Draw all enemies.</span></td></tr><tr><td class="number">20</td><td>    <span class="k1">for</span><span class="k2">(</span> std::vector<span class="k3">&lt;</span>Enemy <span class="k3">*</span><span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator iter <span class="k3">=</span> enemies.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>      iter <span class="k3">!</span><span class="k3">=</span> enemies.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> iter<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">22</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">23</td><td>      <span class="k2">(</span><span class="k3">*</span>iter<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Draw<span class="k2">(</span>dblBuff<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td>    <span class="c">// Draw all bullets.</span></td></tr><tr><td class="number">27</td><td>    <span class="k1">for</span><span class="k2">(</span> std::vector<span class="k3">&lt;</span>Bullet <span class="k3">*</span><span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator iter <span class="k3">=</span> bullets.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>      iter <span class="k3">!</span><span class="k3">=</span> bullets.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> iter<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">29</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">30</td><td>      <span class="k2">(</span><span class="k3">*</span>iter<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Draw<span class="k2">(</span>dblBuff<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">32</td><td>&#160;</td></tr><tr><td class="number">33</td><td>    <span class="c">// draw all particles.</span></td></tr><tr><td class="number">34</td><td>    <span class="k1">for</span><span class="k2">(</span> std::vector<span class="k3">&lt;</span>Particle <span class="k3">*</span><span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator iter <span class="k3">=</span> particles.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>      iter <span class="k3">!</span><span class="k3">=</span> particles.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> iter<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">36</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">37</td><td>      <span class="k2">(</span><span class="k3">*</span>iter<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Draw<span class="k2">(</span>dblBuff<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">39</td><td>&#160;</td></tr><tr><td class="number">40</td><td>        <span class="c">// draw powerups</span></td></tr><tr><td class="number">41</td><td>    <span class="k1">for</span><span class="k2">(</span> std::vector<span class="k3">&lt;</span>Powerup <span class="k3">*</span><span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator iter <span class="k3">=</span> pUps.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>      iter <span class="k3">!</span><span class="k3">=</span> pUps.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> iter<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">43</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">44</td><td>            <span class="k2">(</span><span class="k3">*</span>iter<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Draw<span class="k2">(</span>dblBuff<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">45</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">46</td><td>&#160;</td></tr><tr><td class="number">47</td><td>    <span class="c">// draw the player</span></td></tr><tr><td class="number">48</td><td>    playa.Draw<span class="k2">(</span>dblBuff<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>&#160;</td></tr><tr><td class="number">50</td><td>    <span class="c">// let the playe rknow the map has restarted</span></td></tr><tr><td class="number">51</td><td>    <span class="k1">if</span><span class="k2">(</span> restart_timer <span class="k3">&gt;</span> <span class="n">0</span> <span class="k2">)</span></td></tr><tr><td class="number">52</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">53</td><td>      <a href="http://www.allegro.cc/manual/draw_sprite" target="_blank"><span class="a">draw_sprite</span></a><span class="k2">(</span> dblBuff, restart, <span class="n">160</span>, <span class="n">228</span> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">55</td><td>    </td></tr><tr><td class="number">56</td><td>    <span class="k1">if</span><span class="k2">(</span> show_level_timer <span class="k3">&gt;</span> <span class="n">0</span> <span class="k2">)</span></td></tr><tr><td class="number">57</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">58</td><td>      draw_level_sprite<span class="k2">(</span>dblBuff, level_sprite, level_nums<span class="k2">[</span>level-1<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">60</td><td>&#160;</td></tr><tr><td class="number">61</td><td>    <span class="c">// draw foreground snowflakes</span></td></tr><tr><td class="number">62</td><td>    <span class="k1">for</span><span class="k2">(</span> std::vector<span class="k3">&lt;</span>SFlake <span class="k3">*</span><span class="k3">&gt;</span><span class="k2">:</span><span class="k2">:</span>iterator iter <span class="k3">=</span> ForeFlakes.begin<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>      iter <span class="k3">!</span><span class="k3">=</span> ForeFlakes.end<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> iter<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span></td></tr><tr><td class="number">64</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">65</td><td>      <span class="k2">(</span><span class="k3">*</span>iter<span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>Draw<span class="k2">(</span>dblBuff<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">67</td><td>&#160;</td></tr><tr><td class="number">68</td><td>    textprintf<span class="k2">(</span>dblBuff, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">10</span>, <span class="n">10</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>, <span class="s">"FPS: %d"</span>, fps <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">69</td><td>    textprintf<span class="k2">(</span>dblBuff, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">10</span>, <span class="n">20</span>, <a href="http://www.allegro.cc/manual/makecol" target="_blank"><span class="a">makecol</span></a><span class="k2">(</span><span class="n">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span>, <span class="s">"HEALTH: %d"</span>, playa.health <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">70</td><td>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span> dblBuff, <a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span>, <a href="http://www.allegro.cc/manual/SCREEN_W" target="_blank"><span class="a">SCREEN_W</span></a>, <a href="http://www.allegro.cc/manual/SCREEN_H" target="_blank"><span class="a">SCREEN_H</span></a> <span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">71</td><td>    <a href="http://www.allegro.cc/manual/release_bitmap" target="_blank"><span class="a">release_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">72</td><td>    frames_drawn<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>

Now, whenever I run this program in fullscreen (640x480) at a color depth of 16, it flickers.  But only when I don&#39;t run it from Visual Studio .NET 2003.  If I just compile and run it from the GUI, it works fine.  So I tried putting in vysnc();, and it locks my FPS at 60, but flickers even worse.  Then I tried messing around with video_bitmaps, aquire bitmap, etc., all for nothing.  And this is for a christmas hack game, but I was just hoping I could put it out in fullscreen, not windowed.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (zer0)</author>
		<pubDate>Thu, 22 Dec 2005 23:29:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>First of all: Separate logic and drawing code. Anything that modifies the player or any other data structure should not be touched while drawing.<br />Secondly; (un)locking the screen is a good idea, but only right before and after you blit to it. No use locking screen when you&#39;re drawing to the back buffer (in fact, that&#39;s the purpose of double buffering).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Tobias Dammers)</author>
		<pubDate>Thu, 22 Dec 2005 23:33:50 +0000</pubDate>
	</item>
</rss>
