<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Antialiasing in allegro</title>
		<link>http://www.allegro.cc/forums/view/611078</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 20 Sep 2012 17:55:54 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello,</p><p>I&#39;m looking for way to draw bitmaps (not primitives) (zoomed and without zoom) antialised.</p><p>When I draw bitmap the normal way, allegro functions take floats as position arguments, but the position of the bitmap is rounded to whole pixels, this makes bad effects in the game. The goal would be to be able to draw the bitmap in between two pixels like I show it on this picture:<br /><a href="http://www.kovarex.com/download/bitmap-placement.png">http://www.kovarex.com/download/bitmap-placement.png</a></p><p>I would expect, that this kind of multisampling setting would do this, but it didn&#39;t</p><div class="source-code snippet"><div class="inner"><pre>  <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_RESIZABLE<span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_VSYNC, <span class="n">1</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/al_set_new_bitmap_flags"><span class="a">al_set_new_bitmap_flags</span></a><span class="k2">(</span>ALLEGRO_MIN_LINEAR<span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLE_BUFFERS, <span class="n">1</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
  <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLES, <span class="n">6</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kovarex)</author>
		<pubDate>Wed, 19 Sep 2012 02:53:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you use 5.0.7 and the D3D driver, multi-sampling does not work.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Wed, 19 Sep 2012 03:00:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Elias:<br />I used the 5.1.2 version, and today we updated to 5.1.3 and it is the same.</p><p>The goal would be to make it work either for D3D and opengl if possible.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kovarex)</author>
		<pubDate>Wed, 19 Sep 2012 03:01:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In 5.1.3 it should work. What happens if you run ex_multisample?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Wed, 19 Sep 2012 03:23:22 +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/611078/966175#target">kovarex</a> said:</div><div class="quote"><p> al_set_new_display_option(ALLEGRO_SAMPLES, 6, ALLEGRO_SUGGEST);
</p></div></div><p>I&#39;m not very familiar with exactly what capabilities Allegro can use, but 6 is a weird number for &#39;normal&#39; samples, I think. Try 4?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (weapon_S)</author>
		<pubDate>Wed, 19 Sep 2012 10:47:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>weapon_S:<br />I tried 4 instead of 6 and it is the same, bitmap position is still rounded to pixels.</p><p>Elias:<br />But ex_multisample contains only primitives drawing, I need multisampling for bitmap drawing.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kovarex)</author>
		<pubDate>Wed, 19 Sep 2012 14:01:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes, but does ex_multisample work? al_draw_bitmap just calls the underlying primitive functions as far as I know so either both should work or neither. Anyway, if ex_multisample works but bitmap drawing does not, it sounds like a bug to me. If ex_multisample doesn&#39;t work as well, multisampling simply doesn&#39;t work for some reason.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Wed, 19 Sep 2012 15:06:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Elias:<br />ex_multisample works
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kovarex)</author>
		<pubDate>Wed, 19 Sep 2012 15:24:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ll try modifying it to add an al_draw_bitmap call when I get home and see how it looks here.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Wed, 19 Sep 2012 15:28:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m just firing ideas.<br />What does <span class="source-code"><a href="http://www.allegro.cc/manual/al_get_display_option"><span class="a">al_get_display_option</span></a><span class="k2">(</span>display, ALLEGRO_RENDER_METHOD<span class="k2">)</span><span class="k2">;</span></span> return?<br />That shouldn&#39;t return 0... but I guess something has to be wrong.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (weapon_S)</author>
		<pubDate>Wed, 19 Sep 2012 16:04:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>weapon_S:<br />It returns 0.<br />Does it mean hardware acceleration isn&#39;t used?<br />How could it be possible? The game isn&#39;t THAT slow (I can draw up to 20k sprites 60fps, would software acceleration make it?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kovarex)</author>
		<pubDate>Wed, 19 Sep 2012 22:53:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I tried adding an al_draw_bitmap call to ex_multisample and it does work.</p><p>Double-check that:</p><p> - none of your bitmaps are created before al_create_display<br /> - you set ALLEGRO_SAMPLE_BUFFERS and ALLEGRO_SAMPLES before al_create_display<br /> - you set ALLEGRO_MIN_LINEAR and ALLEGRO_MAG_LINEAR before any bitmaps are created/loaded
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Wed, 19 Sep 2012 23:11:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Elas:</p><p>This is our display init function<br />bitmaps are loaded later</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">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  2</span>    <span class="k1">throw</span> std::runtime_error<span class="k2">(</span><span class="s">"failed to initialize allegro!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  3</span>  <span class="c">/* vsync 1 means force on, 2 means forced off. */</span>
<span class="number">  4</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_RESIZABLE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>  <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_VSYNC, <span class="n">1</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>  <a href="http://www.allegro.cc/manual/al_set_new_bitmap_flags"><span class="a">al_set_new_bitmap_flags</span></a><span class="k2">(</span>ALLEGRO_MIN_LINEAR <span class="k3">|</span> ALLEGRO_MAG_LINEAR<span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>  <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLE_BUFFERS, <span class="n">1</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>  <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLES, <span class="n">4</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>  <a href="http://www.allegro.cc/manual/al_set_new_window_position"><span class="a">al_set_new_window_position</span></a><span class="k2">(</span>global-&gt;properties.get<span class="k3">&lt;</span>int&gt;<span class="k2">(</span><span class="s">"screen.x"</span>, <span class="n">100</span><span class="k2">)</span>,
<span class="number"> 11</span>                             global-&gt;properties.get<span class="k3">&lt;</span>int&gt;<span class="k2">(</span><span class="s">"screen.y"</span>, <span class="n">100</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>
<span class="number"> 13</span>  this-&gt;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>global-&gt;properties.get<span class="k3">&lt;</span>int&gt;<span class="k2">(</span><span class="s">"screen.width"</span>, <span class="n">800</span><span class="k2">)</span>,
<span class="number"> 14</span>                                    global-&gt;properties.get<span class="k3">&lt;</span>int&gt;<span class="k2">(</span><span class="s">"screen.height"</span>, <span class="n">600</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>this-&gt;display<span class="k2">)</span>
<span class="number"> 16</span>    <span class="k1">throw</span> std::runtime_error<span class="k2">(</span><span class="s">"failed to create display!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>  <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_current_display"><span class="a">al_get_current_display</span></a><span class="k2">(</span><span class="k2">)</span>,
<span class="number"> 18</span>                             <span class="s">"Window Title"</span>,
<span class="number"> 19</span>                             <span class="s">"Content Title"</span>,
<span class="number"> 20</span>                             ssprintf<span class="k2">(</span><span class="s">"render method = %d"</span>, <a href="http://www.allegro.cc/manual/al_get_display_option"><span class="a">al_get_display_option</span></a><span class="k2">(</span>display, ALLEGRO_RENDER_METHOD<span class="k2">)</span><span class="k2">)</span>.c_str<span class="k2">(</span><span class="k2">)</span>,
<span class="number"> 21</span>                             NULL, ALLEGRO_MESSAGEBOX_ERROR<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>
<span class="number"> 23</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 24</span>    <span class="k1">throw</span> std::runtime_error<span class="k2">(</span><span class="s">"Failed to initialize al_init_image_addon!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 26</span>    <span class="k1">throw</span> std::runtime_error<span class="k2">(</span><span class="s">"failed to initialize the keyboard!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_mouse"><span class="a">al_install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 28</span>    <span class="k1">throw</span> std::runtime_error<span class="k2">(</span><span class="s">"failed to initialize the mouse!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>  <a href="http://www.allegro.cc/manual/al_init_font_addon"><span class="a">al_init_font_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_ttf_addon"><span class="a">al_init_ttf_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 31</span>    <span class="k1">throw</span> std::runtime_error<span class="k2">(</span><span class="s">"failed to initialize the ttf addon!"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span>  this-&gt;font <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_ttf_font"><span class="a">al_load_ttf_font</span></a><span class="k2">(</span><span class="k2">(</span>global-&gt;resourcePath <span class="k3">+</span> <span class="s">"pirulen.ttf"</span><span class="k2">)</span>.c_str<span class="k2">(</span><span class="k2">)</span>, <span class="n">24</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>Display::font<span class="k2">)</span>
<span class="number"> 34</span>    <span class="k1">throw</span> std::runtime_error<span class="k2">(</span><span class="s">"Could not load 'pirulen.ttf'."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 35</span>  Display::itemCountFont <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_ttf_font"><span class="a">al_load_ttf_font</span></a><span class="k2">(</span><span class="k2">(</span>global-&gt;resourcePath <span class="k3">+</span> <span class="s">"pirulen.ttf"</span><span class="k2">)</span>.c_str<span class="k2">(</span><span class="k2">)</span>, <span class="n">14</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>Display::itemCountFont<span class="k2">)</span>
<span class="number"> 37</span>    <span class="k1">throw</span> std::runtime_error<span class="k2">(</span><span class="s">"Could not load 'pirulen.ttf'."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>  Display::tileLabelFont <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_ttf_font"><span class="a">al_load_ttf_font</span></a><span class="k2">(</span><span class="k2">(</span>global-&gt;resourcePath <span class="k3">+</span> <span class="s">"pirulen.ttf"</span><span class="k2">)</span>.c_str<span class="k2">(</span><span class="k2">)</span>, <span class="n">14</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>Display::tileLabelFont<span class="k2">)</span>
<span class="number"> 40</span>    <span class="k1">throw</span> std::runtime_error<span class="k2">(</span><span class="s">"Could not load 'pirulen.ttf'."</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_primitives_addon"><span class="a">al_init_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 42</span>    <span class="k1">throw</span> std::runtime_error<span class="k2">(</span><span class="s">"failed to load primitives addon!"</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kovarex)</author>
		<pubDate>Thu, 20 Sep 2012 02:38:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This is my modified ex_multisample. If you either comment out the multi-sampling or the bitmap filtering you can clearly see what both do - the former anti-aliases the outline, the latter filters the inside of the texture. So without multisampling the bitmap seems to jump in one-pixel steps. Without the filtering the texture seems to jump in one-pixel steps. With both on it&#39;s all smooth.</p><p>I&#39;m using Ubuntu/OpenGL here.</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="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;math.h&gt;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  5</span><span class="k2">{</span>
<span class="number">  6</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">;</span>
<span class="number">  7</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>queue<span class="k2">;</span>
<span class="number">  8</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer<span class="k2">;</span>
<span class="number">  9</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bitmap<span class="k2">;</span>
<span class="number"> 10</span>   <span class="k1">float</span> bx, by<span class="k2">;</span>
<span class="number"> 11</span>   <span class="k1">bool</span> quit <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 12</span>   <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 13</span>   <span class="k1">unsigned</span> <span class="k1">char</span> <span class="k3">*</span>rgba<span class="k2">;</span>
<span class="number"> 14</span>   <span class="k1">int</span> p<span class="k2">;</span>
<span class="number"> 15</span>   <span class="k1">int</span> x, y<span class="k2">;</span>
<span class="number"> 16</span>
<span class="number"> 17</span>   <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>   <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>
<span class="number"> 20</span>   <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLE_BUFFERS, <span class="n">1</span>, ALLEGRO_REQUIRE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>   <a href="http://www.allegro.cc/manual/al_set_new_display_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLES, <span class="n">16</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</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><span class="n">200</span>, <span class="n">200</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>
<span class="number"> 24</span>   <a href="http://www.allegro.cc/manual/al_set_new_bitmap_flags"><span class="a">al_set_new_bitmap_flags</span></a><span class="k2">(</span>ALLEGRO_MIN_LINEAR <span class="k3">|</span> ALLEGRO_MAG_LINEAR<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>   bitmap <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">16</span>, <span class="n">16</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_LOCKED_REGION"><span class="a">ALLEGRO_LOCKED_REGION</span></a> <span class="k3">*</span>locked<span class="k2">;</span>
<span class="number"> 27</span>   locked <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_lock_bitmap"><span class="a">al_lock_bitmap</span></a><span class="k2">(</span>bitmap, ALLEGRO_PIXEL_FORMAT_ABGR_8888, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>   rgba <span class="k3">=</span> locked-&gt;data<span class="k2">;</span>
<span class="number"> 29</span>   p <span class="k3">=</span> locked-&gt;pitch<span class="k2">;</span>
<span class="number"> 30</span>   <span class="k1">for</span> <span class="k2">(</span>y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> y <span class="k3">&lt;</span> <span class="n">16</span><span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 31</span>      <span class="k1">for</span> <span class="k2">(</span>x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> x <span class="k3">&lt;</span> <span class="n">16</span><span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 32</span>         <span class="k1">int</span> c <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span><span class="k2">(</span>x <span class="k3">/</span> <span class="n">4</span><span class="k2">)</span> <span class="k3">+</span> <span class="k2">(</span>y <span class="k3">/</span> <span class="n">4</span><span class="k2">)</span><span class="k2">)</span> <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">255</span><span class="k2">;</span>
<span class="number"> 33</span>         rgba<span class="k2">[</span>y <span class="k3">*</span> p <span class="k3">+</span> x <span class="k3">*</span> <span class="n">4</span> <span class="k3">+</span> <span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> c<span class="k2">;</span>
<span class="number"> 34</span>         rgba<span class="k2">[</span>y <span class="k3">*</span> p <span class="k3">+</span> x <span class="k3">*</span> <span class="n">4</span> <span class="k3">+</span> <span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> c<span class="k2">;</span>
<span class="number"> 35</span>         rgba<span class="k2">[</span>y <span class="k3">*</span> p <span class="k3">+</span> x <span class="k3">*</span> <span class="n">4</span> <span class="k3">+</span> <span class="n">2</span><span class="k2">]</span> <span class="k3">=</span> c<span class="k2">;</span>
<span class="number"> 36</span>         rgba<span class="k2">[</span>y <span class="k3">*</span> p <span class="k3">+</span> x <span class="k3">*</span> <span class="n">4</span> <span class="k3">+</span> <span class="n">3</span><span class="k2">]</span> <span class="k3">=</span> <span class="n">255</span><span class="k2">;</span>
<span class="number"> 37</span>      <span class="k2">}</span>
<span class="number"> 38</span>   <span class="k2">}</span>
<span class="number"> 39</span>   <a href="http://www.allegro.cc/manual/al_unlock_bitmap"><span class="a">al_unlock_bitmap</span></a><span class="k2">(</span>bitmap<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span>
<span class="number"> 41</span>   timer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> <span class="n">60</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span>
<span class="number"> 43</span>   queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 44</span>   <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span>   <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>   <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>   
<span class="number"> 48</span>   <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 49</span>   <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>quit<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 50</span>      <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> event<span class="k2">;</span>
<span class="number"> 51</span>      <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>queue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 52</span>      <span class="k1">switch</span> <span class="k2">(</span>event.type<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 53</span>         <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_CLOSE:
<span class="number"> 54</span>            quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 55</span>
<span class="number"> 56</span>         <span class="k1">case</span> ALLEGRO_EVENT_KEY_DOWN:
<span class="number"> 57</span>            <span class="k1">if</span> <span class="k2">(</span>event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span>
<span class="number"> 58</span>               quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 59</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 60</span>         
<span class="number"> 61</span>         <span class="k1">case</span> ALLEGRO_EVENT_TIMER:
<span class="number"> 62</span>            bx <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_332.html" target="_blank">fmod</a><span class="k2">(</span>bx <span class="k3">+</span> <span class="n">0</span>.<span class="n">1</span>, <span class="n">200</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 63</span>            by <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_332.html" target="_blank">fmod</a><span class="k2">(</span>by <span class="k3">+</span> <span class="n">0</span>.<span class="n">1</span>, <span class="n">200</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 64</span>            redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 65</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 66</span>      <span class="k2">}</span>
<span class="number"> 67</span>      
<span class="number"> 68</span>      <span class="k1">if</span> <span class="k2">(</span>redraw <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>queue<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 69</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_f"><span class="a">al_map_rgb_f</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">5</span>, <span class="n">0</span>.<span class="n">5</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 70</span>         <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>bitmap, bx, by, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 71</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"> 72</span>         
<span class="number"> 73</span>         redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 74</span>      <span class="k2">}</span>
<span class="number"> 75</span>   <span class="k2">}</span>
<span class="number"> 76</span>
<span class="number"> 77</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 78</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Thu, 20 Sep 2012 03:44:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In the first post I had only ALLEGRO_MIN_LINEAR, adding ALLEGRO_MAG_LINEAR to new bitmap flags seems to solve the problem.<br />Could it be, that unscaled bitmaps are affected by the ALLEGRO_MAG_LINEAR flag?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kovarex)</author>
		<pubDate>Thu, 20 Sep 2012 17:00:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It doesn&#39;t say on MSDN <span class="ref"><sup>[<a href="#">1</a>]</sup></span>. But you almost always want either both or none (and if you scale your bitmaps down more than about 50% you want to enable mipmaps as well). Maybe we should provide new defines like</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#define ALLEGRO_BILINEAR_FILTER ALLEGRO_MIN_LINEAR | ALLEGRO_MAG_LINEAR</span>
<span class="p">#define ALLEGRO_TRILINEAR_FILTER ALLEGRO_BILINEAR_FILTER | ALLEGRO_MIPMAP</span>
</pre></div></div><p>

and then you&#39;d just use bi-linear or tri-linear. And now with all the added 3D support, we also should add an anisotropic filtering option.
</p><div class="ref-block"><h2>References</h2><ol><li><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb172357%28v=vs.85%29.aspx">http://msdn.microsoft.com/en-us/library/windows/desktop/bb172357%28v=vs.85%29.aspx</a></li></ol></div></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Thu, 20 Sep 2012 17:55:54 +0000</pubDate>
	</item>
</rss>
