<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Flickering border artifacts when using &quot;al_set_clipping_rectangle&quot;</title>
		<link>http://www.allegro.cc/forums/view/617185</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 03 Jan 2018 00:18:46 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have my video game display coded so that &quot;ALLEGRO_FULLSCREEN_WINDOW&quot; mode will do the largest integer scale possible, then use &quot;al_set_clipping_rectangle&quot; to preserve the aspect ratio.</p><p>I expect the &quot;borders&quot; of the clipping rectangle to be black, but instead, they flicker with what looks like screen artifacts. (See attachments)</p><p>Here is an excerpt from my display code:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a><span class="k2">(</span>ALLEGRO_FULLSCREEN_WINDOW<span class="k2">)</span><span class="k2">;</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="c">/* Initialize the one and only global display for the game */</span>
<span class="number">  4</span>display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span>width <span class="k3">*</span> scale, height <span class="k3">*</span> scale<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>
<span class="number">  6</span><a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span><span class="c">/* Scale and center the display as big as possible on this screen */</span>                                               
<span class="number">  9</span>set_display_transform<span class="k2">(</span>scale, offset_x, offset_y, fullscreen<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>                                                                                                                       
<span class="number"> 11</span><span class="c">/* Crop the drawing area, to not accidentally draw in the black borders */</span>                                         
<span class="number"> 12</span><a href="http://www.allegro.cc/manual/al_set_clipping_rectangle"><span class="a">al_set_clipping_rectangle</span></a><span class="k2">(</span>offset_x, offset_y, display_width <span class="k3">*</span> scale, display_height <span class="k3">*</span> scale<span class="k2">)</span><span class="k2">;</span>
</div></div><p>

Full code here:</p><p><a href="https://github.com/drcouzelis/colorwandcastle/blob/master/src/display.c">https://github.com/drcouzelis/colorwandcastle/blob/master/src/display.c</a></p><p>Is there something I can do to prevent the seizure-inducing flickering around the display area?</p><p>My computer:<br />Arch Linux (current)<br />Radeon HD 5450, with open source &quot;radeon&quot; driver
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (David Couzelis)</author>
		<pubDate>Sat, 23 Dec 2017 03:17:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Did you forget the attachment?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Sat, 23 Dec 2017 06:01:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Haha</p><p>Here are the attachments. <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (David Couzelis)</author>
		<pubDate>Sat, 23 Dec 2017 08:16:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Can you post the source code of set_display_transform?</p><p>Also note that the parameters to al_create_display are ignored when you use ALLEGRO_FULLSCREEN_WINDOW.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Sat, 23 Dec 2017 09:31:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I can&#39;t say what you&#39;re doing for sure, but it sounds like you&#39;re leaving video memory uninitialized, with undefined contents. Are you clearing the screen?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 23 Dec 2017 09:38:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/617185/1034030#target">Elias</a> said:</div><div class="quote"><p>Can you post the source code of set_display_transform?</p></div></div><p>

The full code is here: <a href="https://github.com/drcouzelis/colorwandcastle/blob/master/src/display.c">https://github.com/drcouzelis/colorwandcastle/blob/master/src/display.c</a></p><p>Here it is again, for convenience:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k1">static</span> <span class="k1">void</span> set_display_transform<span class="k2">(</span><span class="k1">int</span> scale, <span class="k1">float</span> offset_x, <span class="k1">float</span> offset_y, <span class="k1">bool</span> fullscreen<span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> trans<span class="k2">;</span>
<span class="number">  4</span>
<span class="number">  5</span>    <span class="c">/* Confirm that the display has been created */</span>
<span class="number">  6</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_48.html" target="_blank">assert</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_target_bitmap"><span class="a">al_get_target_bitmap</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span>    <span class="c">/**</span>
<span class="number">  9</span><span class="c">     * Scale the coordinates to match the actual size of the display.</span>
<span class="number"> 10</span><span class="c">     * It will be performed on the current target bitmap.</span>
<span class="number"> 11</span><span class="c">     */</span>
<span class="number"> 12</span>    <a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>trans<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>    <a href="http://www.allegro.cc/manual/al_scale_transform"><span class="a">al_scale_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>trans, scale, scale<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>    <span class="k1">if</span> <span class="k2">(</span>fullscreen<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 15</span>        <a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>trans, offset_x, offset_y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>    <span class="k2">}</span>
<span class="number"> 17</span>    <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>trans<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span><span class="k2">}</span>
</div></div><p>

</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/617185/1034031#target">Edgar Reynaldo</a> said:</div><div class="quote"><p>Are you clearing the screen?</p></div></div><p>

I think so...</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number"> 1</span><a href="http://www.allegro.cc/manual/al_clear_to_color"><span class="a">al_clear_to_color</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 2</span>draw<span class="k2">(</span>data<span class="k2">)</span><span class="k2">;</span> <span class="c">/* DRAW */</span>
<span class="number"> 3</span><a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 4</span>redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
</div></div><p>

Full source: <a href="https://github.com/drcouzelis/colorwandcastle/blob/master/src/run.c">https://github.com/drcouzelis/colorwandcastle/blob/master/src/run.c</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (David Couzelis)</author>
		<pubDate>Sat, 23 Dec 2017 22:03:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Bumping this thread so it doesn&#39;t get lost.</p><p>Can you provide a minimal working (failing) example that does this?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 03 Jan 2018 00:18:46 +0000</pubDate>
	</item>
</rss>
