<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Drawing antialiased primitives to bitmaps?</title>
		<link>http://www.allegro.cc/forums/view/617204</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 16 Jan 2018 23:29:26 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
I&#39;m working on a little project using C++ and Allegro 5, my question is</p><p>Is there a way to draw antialiased primitives to a bitmap using Allegro 5? I mean I&#39;m using this function</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">void</span> draw_to_gameBuffer<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span><span class="k3">&amp;</span>gameBuffer, <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span><span class="k3">&amp;</span>display<span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>    <span class="k1">static</span> <span class="k1">float</span> x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  4</span>
<span class="number">  5</span>    <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>gameBuffer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>    <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>, <span class="n">350</span>, <span class="n">622</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">130</span>, <span class="n">80</span>, <span class="n">120</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>    <a href="http://www.allegro.cc/manual/al_draw_filled_circle"><span class="a">al_draw_filled_circle</span></a><span class="k2">(</span>x, <span class="n">200</span>, <span class="n">100</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">12</span>, <span class="n">138</span>, <span class="n">129</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>    <a href="http://www.allegro.cc/manual/al_draw_filled_triangle"><span class="a">al_draw_filled_triangle</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="n">100</span>, <span class="n">0</span>, <span class="n">50</span>, <span class="n">100</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">12</span>, <span class="n">138</span>, <span class="n">129</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>    x <span class="k3">+</span><span class="k3">=</span> <span class="n">2</span>.<span class="n">7</span><span class="k2">;</span>
<span class="number"> 11</span>    <span class="k1">if</span><span class="k2">(</span>x <span class="k3">&gt;</span> <span class="n">350</span> <span class="k3">+</span> <span class="n">100</span><span class="k2">)</span>
<span class="number"> 12</span>        x <span class="k3">=</span> <span class="k3">-</span><span class="n">250</span><span class="k2">;</span>
<span class="number"> 13</span>
<span class="number"> 14</span>    <a href="http://www.allegro.cc/manual/al_set_target_backbuffer"><span class="a">al_set_target_backbuffer</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span><span class="k2">}</span>
</div></div><p>

to draw a cicle and a triangle (testing purposes) over a target bitmap as shown, on the project display options I have</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_option"><span class="a">al_set_new_display_option</span></a><span class="k2">(</span>ALLEGRO_SAMPLE_BUFFERS, <span class="n">4</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 2</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">8</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
</div></div><p>

to enable antialiasing, the problem is that all primitives rendered on the gameBuffer have jaggies but the primitives rendered off the gameBuffer are perfectly smooth, how can I solve that? Or It&#39;s there a way to do what I&#39;m doing and get smooth primitives?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Fri, 05 Jan 2018 08:08:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yes, it can be done using <span class="source-code">al_set_new_bitmap_samples</span> before creating your bitmap. Unfortunately it is not currently implemented for Direct3D, so you&#39;ll need to force OpenGL via the <span class="source-code">ALLEGRO_OPENGL</span> flag in <span class="source-code"><a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a></span>. As this feature is experimental, you&#39;ll need to define <span class="source-code">ALLEGRO_UNSTABLE</span> before including Allegro&#39;s headers.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Fri, 05 Jan 2018 12:01:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m trying to implement this but it seems that it&#39;s not working or at least that&#39;s what I feel, I have this:</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">#define ALLEGRO_UNSTABLE</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  4</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  5</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="c">//------------------------------------Display options-------------------------------------</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_SAMPLE_BUFFERS, <span class="n">2</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span> <span class="c">//antialias stuff</span>
<span class="number">  9</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">8</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span> <span class="c">//antialias stuff</span>
<span class="number"> 10</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_OPENGL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</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_WINDOWED<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</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"> 13</span>  <span class="c">//----------------------------------Display options END-----------------------------------</span>
<span class="number"> 14</span>
<span class="number"> 15</span>
<span class="number"> 16</span>  <span class="c">//------------------------------------Setting Pointers------------------------------------</span>
<span class="number"> 17</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, HEIGHT<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>  al_apply_window_constraints<span class="k2">(</span>display, <span class="k1">true</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>  <span class="c">//limits the window to a minimum width and height</span>
<span class="number"> 20</span>  al_set_window_constraints<span class="k2">(</span>display, MIN_WIDTH, MIN_HEIGHT, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>
<span class="number"> 22</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="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>  event_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"> 24</span>
<span class="number"> 25</span>
<span class="number"> 26</span>  <span class="c">//-------------------------------------Bitmap loading-------------------------------------</span>
<span class="number"> 27</span>  al_set_new_bitmap_samples<span class="k2">(</span><span class="n">4</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>  gameBuffer <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>gameBufferWidth, gameBufferHeight<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>  gameBufferHeight <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_height"><span class="a">al_get_display_height</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span> <span class="c">//initial scale</span>
<span class="number"> 30</span>  gameBufferWidth <span class="k3">=</span> <span class="k2">(</span>gameBufferHeight <span class="k3">/</span> <span class="n">16</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">9</span><span class="k2">;</span> <span class="c">//initial scale</span>
<span class="number"> 31</span>  <span class="c">//-----------------------------------Bitmap loading END-----------------------------------</span>
</div></div><p>

Obviously I have more code in between but nothing that matters to this issue<br />I can share my entire code, I don&#39;t have any than the main and the function to draw to the bitmap
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Fri, 05 Jan 2018 13:11:23 +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/617204/1034367#target">trictonicmp</a> said:</div><div class="quote"><p>
</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_OPENGL<span class="k2">)</span><span class="k2">;</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_WINDOWED<span class="k2">)</span><span class="k2">;</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>
</pre></div></div><p>
</p></div></div><p>
Only the last call to <span class="source-code"><a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a></span> is having any effect. You&#39;re overwriting the value you just set. Combine the flags using a bitwise OR.</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_OPENGL <span class="k3">|</span> ALLEGRO_WINDOWED <span class="k3">|</span> ALLEGRO_RESIZABLE<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
I&#39;m working on testing this on my machine at the moment.</p><p>Anti-aliased primitives drawn to non backbuffer bitmaps appear to be working for me :</p><p>Upper left corner is backbuffer drawing, clockwise from top right is 8, 4, and 2 multi-sampled bitmaps.<br /><span class="remote-thumbnail"><span class="json">{"name":"611193","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/8\/0\/80d807e5b7c2fa6c47362aa89008f0d6.png","w":1202,"h":941,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/8\/0\/80d807e5b7c2fa6c47362aa89008f0d6"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/8/0/80d807e5b7c2fa6c47362aa89008f0d6-240.jpg" alt="611193" width="240" height="187" /></span></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="number">   2</span><span class="p">#define ALLEGRO_UNSTABLE</span>
<span class="number">   3</span>
<span class="number">   4</span><span class="p">#include "allegro5/allegro.h"</span>
<span class="number">   5</span><span class="p">#include "allegro5/allegro_primitives.h"</span>
<span class="number">   6</span>
<span class="number">   7</span>
<span class="number">   8</span>
<span class="number">   9</span><span class="k1">int</span> ww <span class="k3">=</span> <span class="n">1200</span><span class="k2">;</span>
<span class="number">  10</span><span class="k1">int</span> wh <span class="k3">=</span> <span class="n">900</span><span class="k2">;</span>
<span class="number">  11</span>
<span class="number">  12</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span> d <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  13</span>
<span class="number">  14</span><span class="k1">void</span> DrawSomePrimitives<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  15</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> bmp <span class="k3">=</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="number">  16</span>    <span class="k1">int</span> bw <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_width"><span class="a">al_get_bitmap_width</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number">  17</span>    <span class="k1">int</span> bh <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_bitmap_height"><span class="a">al_get_bitmap_height</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number">  18</span>    
<span class="number">  19</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">96</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  20</span>    
<span class="number">  21</span>    <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">25</span><span class="k3">*</span>bw , <span class="n">0</span>.<span class="n">25</span><span class="k3">*</span>bh , <span class="n">0</span>.<span class="n">75</span><span class="k3">*</span>bw , <span class="n">0</span>.<span class="n">75</span><span class="k3">*</span>bh , <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">96</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  22</span>    <a href="http://www.allegro.cc/manual/al_draw_rectangle"><span class="a">al_draw_rectangle</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">25</span><span class="k3">*</span>bw , <span class="n">0</span>.<span class="n">25</span><span class="k3">*</span>bh , <span class="n">0</span>.<span class="n">75</span><span class="k3">*</span>bw , <span class="n">0</span>.<span class="n">75</span><span class="k3">*</span>bh , <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">127</span>,<span class="n">127</span><span class="k2">)</span> , <span class="n">5</span>.<span class="n">0</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_draw_filled_triangle"><span class="a">al_draw_filled_triangle</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">0</span><span class="k3">*</span>bw , <span class="n">0</span>.<span class="n">5</span><span class="k3">*</span>bh , <span class="n">0</span>.<span class="n">5</span><span class="k3">*</span>bw , <span class="n">0</span>.<span class="n">0</span><span class="k3">*</span>bh , <span class="n">0</span>.<span class="n">75</span><span class="k3">*</span>bw , <span class="n">0</span>.<span class="n">75</span><span class="k3">*</span>bh , <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">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span>    <a href="http://www.allegro.cc/manual/al_draw_triangle"><span class="a">al_draw_triangle</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">2</span><span class="k3">*</span>bw , <span class="n">0</span>.<span class="n">4</span><span class="k3">*</span>bh , <span class="n">0</span>.<span class="n">4</span><span class="k3">*</span>bw , <span class="n">0</span>.<span class="n">2</span><span class="k3">*</span>bh , <span class="n">0</span>.<span class="n">65</span><span class="k3">*</span>bw , <span class="n">0</span>.<span class="n">65</span><span class="k3">*</span>bh , <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="n">3</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span>
<span class="number">  27</span>    <a href="http://www.allegro.cc/manual/al_draw_filled_circle"><span class="a">al_draw_filled_circle</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">5</span><span class="k3">*</span>bw , <span class="n">0</span>.<span class="n">5</span><span class="k3">*</span>bh , <span class="n">0</span>.<span class="n">15</span><span class="k3">*</span>bw , <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">255</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">  28</span>    <a href="http://www.allegro.cc/manual/al_draw_circle"><span class="a">al_draw_circle</span></a><span class="k2">(</span><span class="n">0</span>.<span class="n">5</span><span class="k3">*</span>bw , <span class="n">0</span>.<span class="n">5</span><span class="k3">*</span>bh , <span class="n">0</span>.<span class="n">15</span><span class="k3">*</span>bw , <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">255</span>,<span class="n">0</span><span class="k2">)</span> , <span class="n">5</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span><span class="k2">}</span>
<span class="number">  30</span>
<span class="number">  31</span>
<span class="number">  32</span>
<span class="number">  33</span><span class="k1">void</span> RecreateBitmaps<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> buf<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  34</span>    ww <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_width"><span class="a">al_get_display_width</span></a><span class="k2">(</span>d<span class="k2">)</span><span class="k2">;</span>
<span class="number">  35</span>    wh <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_height"><span class="a">al_get_display_height</span></a><span class="k2">(</span>d<span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span>    
<span class="number">  37</span>    <span class="k1">if</span> <span class="k2">(</span>buf<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span><a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>buf<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  38</span>    <span class="k1">if</span> <span class="k2">(</span>buf<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span><a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>buf<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  39</span>    <span class="k1">if</span> <span class="k2">(</span>buf<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">)</span> <span class="k2">{</span><a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>buf<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  40</span>    
<span class="number">  41</span>    al_set_new_bitmap_samples<span class="k2">(</span><span class="n">8</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>    buf<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <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>ww<span class="k3">/</span><span class="n">2</span>,wh<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>    al_set_new_bitmap_samples<span class="k2">(</span><span class="n">4</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  44</span>    buf<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <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>ww<span class="k3">/</span><span class="n">2</span>,wh<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  45</span>    al_set_new_bitmap_samples<span class="k2">(</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  46</span>    buf<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> <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>ww<span class="k3">/</span><span class="n">2</span>,wh<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  47</span><span class="k2">}</span>
<span class="number">  48</span>
<span class="number">  49</span>
<span class="number">  50</span>
<span class="number">  51</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc , <span class="k1">char</span><span class="k3">*</span><span class="k3">*</span> argv<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  52</span>    
<span class="number">  53</span>    
<span class="number">  54</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="k2">{</span><span class="k1">return</span> <span class="n">1</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  55</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="k2">{</span><span class="k1">return</span> <span class="n">2</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  56</span>    
<span class="number">  57</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="k2">{</span><span class="k1">return</span> <span class="n">10</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  58</span>    
<span class="number">  59</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 , ALLEGRO_SUGGEST , <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  60</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 , ALLEGRO_SUGGEST , <span class="n">8</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</span>    
<span class="number">  62</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_OPENGL <span class="k3">|</span> ALLEGRO_WINDOWED <span class="k3">|</span> ALLEGRO_RESIZABLE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>    
<span class="number">  64</span>    d <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>ww,wh<span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>    
<span class="number">  66</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>d<span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  67</span>    
<span class="number">  68</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a><span class="k3">*</span> t <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">  69</span>    
<span class="number">  70</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a><span class="k3">*</span> q <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">  71</span>    
<span class="number">  72</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>q , <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>d<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</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>q , <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">  74</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>q , <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>t<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  75</span>    
<span class="number">  76</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> buf<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="n">0</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  77</span>    
<span class="number">  78</span>    RecreateBitmaps<span class="k2">(</span>buf<span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>
<span class="number">  80</span>    <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>t<span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</span>    
<span class="number">  82</span>    <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  83</span>    <span class="k1">bool</span> quit <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  84</span>    
<span class="number">  85</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">  86</span>        <span class="k1">if</span> <span class="k2">(</span>redraw<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  87</span>            <a href="http://www.allegro.cc/manual/al_set_target_backbuffer"><span class="a">al_set_target_backbuffer</span></a><span class="k2">(</span>d<span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</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">  89</span>            
<span class="number">  90</span>            <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> sub <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_sub_bitmap"><span class="a">al_create_sub_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_backbuffer"><span class="a">al_get_backbuffer</span></a><span class="k2">(</span>d<span class="k2">)</span> , <span class="n">0</span> , <span class="n">0</span> , ww<span class="k3">/</span><span class="n">2</span> , wh<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>            
<span class="number">  92</span>            <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> bmps<span class="k2">[</span><span class="n">4</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>sub , buf<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , buf<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , buf<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  93</span>            
<span class="number">  94</span>            <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">4</span> <span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  95</span>                <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>bmps<span class="k2">[</span>i<span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>                DrawSomePrimitives<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>            <span class="k2">}</span>
<span class="number">  98</span>            <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_backbuffer"><span class="a">al_get_backbuffer</span></a><span class="k2">(</span>d<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  99</span>            <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>buf<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , ww<span class="k3">/</span><span class="n">2</span> , <span class="n">0</span> , <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>            <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>buf<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , ww<span class="k3">/</span><span class="n">2</span> , wh<span class="k3">/</span><span class="n">2</span> , <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>            <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>buf<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="n">0</span> , wh<span class="k3">/</span><span class="n">2</span> , <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 102</span>            
<span class="number"> 103</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"> 104</span>            
<span class="number"> 105</span>            <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>sub<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 106</span>            
<span class="number"> 107</span>            redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 108</span>        <span class="k2">}</span>
<span class="number"> 109</span>        <span class="k1">do</span> <span class="k2">{</span>
<span class="number"> 110</span>            <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> ev<span class="k2">;</span>
<span class="number"> 111</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>q , <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</span>            
<span class="number"> 113</span>            <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 114</span>                quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 115</span>            <span class="k2">}</span>
<span class="number"> 116</span>            <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN <span class="k3">&amp;</span><span class="k3">&amp;</span> ev.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 117</span>                quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 118</span>            <span class="k2">}</span>
<span class="number"> 119</span>            <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 120</span>                redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 121</span>            <span class="k2">}</span>
<span class="number"> 122</span>            <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_RESIZE<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 123</span>                <a href="http://www.allegro.cc/manual/al_acknowledge_resize"><span class="a">al_acknowledge_resize</span></a><span class="k2">(</span>d<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 124</span>                RecreateBitmaps<span class="k2">(</span>buf<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 125</span>            <span class="k2">}</span>
<span class="number"> 126</span>        <span class="k2">}</span> <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</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>q<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 127</span>            
<span class="number"> 128</span>    <span class="k2">}</span>
<span class="number"> 129</span>    
<span class="number"> 130</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 131</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 06 Jan 2018 22:29:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I didn&#39;t know that display flags must be combined, It worked well but it&#39;s so slow compared to rendering directly to the backbuffer.</p><p>is there a way to do the same thing without the heaviness? <img src="http://www.allegro.cc/forums/smileys/embarassed.gif" alt=":-[" /> if there&#39;s no better way I think I&#39;ll stick to a simple fixed-size window with the resizable flag</p><p>with &quot;is there a way to do the same thing without the heaviness?&quot; I mean, having a buffer where I can render everything then render the buffer to the middle of the display, this way I can resize the buffer without affecting the buffer aspect ratio? <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" /></p><p>[edit]<br />I&#39;ve been testing everything and it seems that OpenGl is slowing the rendering and input for some reason, my OpenGl version is 3.3 but my graphic card is NVS 3100M with 512Mb <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Sun, 07 Jan 2018 00:29:39 +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/617204/1034365#target">SiegeLord</a> said:</div><div class="quote"><p> al_set_new_bitmap_samples</p></div></div><p>This is actually my favorite Allegro feature.  To me, it makes Allegro complete. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />  Allegro can do <i>anything</i>.</p><p>The key here is that now I can render to offscreen surfaces with the same quality as the display bitmap, and use that to generate cool effects.  An immediate example that comes to mind is a screen transition that composites between different states in the game, like menu and gameplay.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Sun, 07 Jan 2018 09:10:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here&#39;s a full feature list of your card:</p><p><a href="http://feedback.wildfiregames.com/report/opengl/device/NVS%203100M">http://feedback.wildfiregames.com/report/opengl/device/NVS%203100M</a></p><p>It should be fast enough to do some stuff. Make sure your <b>drivers</b> are current. But it has a whopping  16 CUDA cores.  (read: very few) Is this Windows or Linux? </p><p>Run glxgears if you&#39;re on Linux, or some other 3D apps. Can you run anything fast?</p><p>Also, use <b>_REQUIRE</b> not _SUGGEST because you want to be SURE that the settings you&#39;re testing are turned on. Allegro intentionally will fail to create the display if the required setting fails, so you know whether it&#39;s using it or not.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Sun, 07 Jan 2018 13:27:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I know, I was hoping to use this feature, it really makes allegro a full graphics library for multimedia stuff but I&#39;m not able to use it, or at least that&#39;s the issue now.</p><p>my drivers are up to date (Windows 10), I tried forcing OpenGl without the antialiasing and it keeps running slow for some reason.</p><p>I ran GFXBench GL and the results were between 20 - 40 fps on the tests done, I have to add that I normally use 3D packages to do some stuff (3d modelling/animation/texturing/rendering) with no problems but It seems that OpenGl with Allegro 5 doesn&#39;t work for me for a reason. <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Sun, 07 Jan 2018 15:54:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Have you tried running the <a href="https://github.com/liballeg/allegro5/blob/master/examples/ex_multisample.c">ex_multisample.c</a> and <a href="https://github.com/liballeg/allegro5/blob/master/examples/ex_multisample_target.c">ex_multisample_target.c</a><br /> example programs?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Mon, 08 Jan 2018 03:32:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It is generally true that OpenGL is a little slower than DirectX on Windows, but not to the extent that it&#39;s unusably slower. Aside from the drivers (which I take are fine), I&#39;m not sure what could be wrong.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Mon, 08 Jan 2018 08:50:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Nope, I ran the example given by Edgar Reynaldo and ran slow too<br />I&#39;ll try to tun these examples to see if it changes something</p><p>It&#39;s not the rendering that is slow (or at least that&#39;s what I think), in the program I made, I was drawing a circle over the mouse positions but the rendering was delayed by 2 - 4 secs, so, whenever I moved the mouse the rendering was at the same speed of my mouse but delayed some secs, even closing the window was delayed by the same fraction of time.</p><p>Anyway I changed my project&#39;s main architecture to be just a scalable window but if I can get this to work I&#39;ll switch it again in the future, I&#39;ll try the examples above <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Mon, 08 Jan 2018 09:37:12 +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/617204/1034417#target">trictonicmp</a> said:</div><div class="quote"><p> It&#39;s not the rendering that is slow (or at least that&#39;s what I think), in the program I made, I was drawing a circle over the mouse positions but the rendering was delayed by 2 - 4 secs, so, whenever I moved the mouse the rendering was at the same speed of my mouse but delayed some secs, even closing the window was delayed by the same fraction of time.</p></div></div><p>Oh, I know what it is.  Your event queue is getting clogged up and laggy by timer events. You can fix it by dropping sequential timer events with al_drop_next_event.</p><p>See <a href="https://github.com/MarkOates/allegro_flare/blob/master/src/framework/framework.cpp#L334-L337">these lines from the AllegroFlare Framework class</a> as an example.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Mon, 08 Jan 2018 09:44:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If my example ran slow too, then there is something else wrong, because my example processes all events as soon as they occur.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 09 Jan 2018 00:22:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>There must be something wrong:( with my computer then, just enabling ALLEGRO_OPENGL flag delays the redrawing, I&#39;ll try &quot;al_drop_next_event&quot; as suggested to see if it changes something.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Wed, 10 Jan 2018 07:16:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can also try updating your graphics drivers to the latest version and see if that fixes it. It can often be the problem.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 10 Jan 2018 07:18:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I guess It&#39;s my GPU or something that doesn&#39;t handle OpenGl
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Thu, 11 Jan 2018 10:33:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Which is why updating your graphics drivers might fix it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 11 Jan 2018 19:17:50 +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/617204/1034401#target">trictonicmp</a> said:</div><div class="quote"><p>
GFXBench GL and the results were between 20 - 40 fps on the tests done,
</p></div></div><p>
That does sound like a really horrible result... </p><p>From here:</p><p><a href="https://gfxbench.com/result.jsp">https://gfxbench.com/result.jsp</a></p><p>There are Intel integrated graphics cards in that list that get &gt;25 FPS. That&#39;s around a GTX 460 mobile.</p><p>Is your &quot;NVS 3100M&quot; a Quattro? Because that same benchmark shows a Quattro 3100M at 62 FPS. So if that&#39;s the case, it&#39;s possible your card may be throttling itself from overheating or something.</p><p>I don&#39;t know. Seems like you need to do some further testing on your system to see if Allegro is actually running slow, or it&#39;s just running as fast as can be expected.</p><p>A quick benchmark to test is in GPU-Z. It&#39;s like the popular CPU-Z program, and it basically tells you a lot of stats about your card as well as whether the clock frequency is dropping. It includes a quick benchmark setting. If say, your card is benching slower than my lowly old chromebook with integrated graphics, then something is definitely wrong.</p><p><a href="https://www.techpowerup.com/gpuz/">https://www.techpowerup.com/gpuz/</a></p><p>There ARE rare driver issues with cards that nVidia / et al have fixed in the past where certain programs will run too slow because the card doesn&#39;t recognize an app properly so it doesn&#39;t leave &quot;low power&quot; state and ramp up to full clock speed. But I thought they had fixed all those issues. (And also, the opposite, where games like Starcraft 2 would actually <a href="https://us.battle.net/forums/en/sc2/topic/224842749">destroy videocards</a> because the drivers were incorrectly having them run hotter than supposed to back in 2010. Lulz.)</p><p>You said you were using Windows 10, but are you using the MOST RECENT drivers FROM NVIDIA, or just stock Windows 10 drivers?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Fri, 12 Jan 2018 02:08:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="https://www.allegro.cc/members/mark.oates">Mark Oates</a> said:</div><div class="quote"><p>
Oh, I know what it is. Your event queue is getting clogged up and laggy by timer events. You can fix it by dropping sequential timer events with al_drop_next_event.</p><p>See <a href="https://github.com/MarkOates/allegro_flare/blob/master/src/framework/framework.cpp#L334-L337">these lines from the AllegroFlare Framework class</a> as an example. 
</p></div></div><p>

Guys I hadn&#39;t tried this until now, as I said before, my drawing was fine (I mean, no lag or low framerate) with ALLEGRO_OPENGL enabled but the input was delayed a bit, It seems that this is the solution to it, I won&#39;t be able to test if it works fine with al_set_new_bitmap_samples() but enabling OpenGl with the code mentioned above my program runs fine, I&#39;ll try to test with my initial project to see if this is the real answer to all this issue and save this post for future refferences.</p><p>BTW my drivers weren&#39;t up to date but this didn&#39;t change anything in my program, I tried with both drivers (old and new) and the result is the same without al_drop_next_event and the code in the link.</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="c">//--------------------------after</span>
<span class="number">  2</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> event, nextEvent<span class="k2">;</span>
<span class="number">  3</span><span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span>
<span class="number">  4</span><span class="k2">{</span>    
<span class="number">  5</span>    <span class="k1">while</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_peek_next_event"><span class="a">al_peek_next_event</span></a><span class="k2">(</span>eventQueue, <span class="k3">&amp;</span>nextEvent<span class="k2">)</span>
<span class="number">  6</span>           <span class="k3">&amp;</span><span class="k3">&amp;</span> nextEvent.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER
<span class="number">  7</span>           <span class="k3">&amp;</span><span class="k3">&amp;</span> nextEvent.timer.source <span class="k3">=</span><span class="k3">=</span> event.timer.source<span class="k2">)</span>
<span class="number">  8</span>           <a href="http://www.allegro.cc/manual/al_drop_next_event"><span class="a">al_drop_next_event</span></a><span class="k2">(</span>eventQueue<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>    
<span class="number"> 10</span>    redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 11</span><span class="k2">}</span>
<span class="number"> 12</span><span class="c">//--------------------------Before</span>
<span class="number"> 13</span>
<span class="number"> 14</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"> 15</span>
<span class="number"> 16</span><span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span>
<span class="number"> 17</span><span class="k2">{</span>
<span class="number"> 18</span>    <span class="c">//I have some code here but practically this</span>
<span class="number"> 19</span>    redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 20</span><span class="k2">}</span>
</div></div><p>

this is the only thing my program has changed and the ALLEGRO_OPENGL flag obviously.</p><p>[edit]<br />Ok guys I&#39;ve just tested with my initial project settings and everything is working just as expected, I really appreciate your help, you are such a beautiful community to work with &lt;3
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Fri, 12 Jan 2018 13:06:37 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You shouldn&#39;t need to drop any events. Usually, you just start and stop your timer when you don&#39;t want it to run.</p><p>Show your old and new event loops, if you would, I&#39;m curious now.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 15 Jan 2018 05:50:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, your first example ran slow too for some reason even though I know you did handle the events with no errors, here is my code for the main loop</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="number">  2</span><span class="c">//---------------------------------------Main loop----------------------------------------</span>
<span class="number">  3</span>  <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span>
<span class="number">  4</span>  <span class="k2">{</span>
<span class="number">  5</span>    <span class="c">//-----------------------------------Getting events-----------------------------------</span>
<span class="number">  6</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> event, nextEvent<span class="k2">;</span>
<span class="number">  7</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>eventQueue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>
<span class="number">  9</span>    <span class="k1">if</span><span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span>
<span class="number"> 10</span>      done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 11</span>
<span class="number"> 12</span>    <span class="k1">if</span><span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_RESIZE<span class="k2">)</span>
<span class="number"> 13</span>    <span class="k2">{</span>
<span class="number"> 14</span>      <a href="http://www.allegro.cc/manual/al_acknowledge_resize"><span class="a">al_acknowledge_resize</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span>      currentGameBufferH <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_height"><span class="a">al_get_display_height</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>      currentGameBufferW <span class="k3">=</span> currentGameBufferH <span class="k3">*</span> <span class="n">0</span>.<span class="n">67</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span>      <span class="c">//center the game buffer</span>
<span class="number"> 20</span>      gameBufferX <span class="k3">=</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_display_width"><span class="a">al_get_display_width</span></a><span class="k2">(</span>display<span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>currentGameBufferW <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>      gameBufferY <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 22</span>    <span class="k2">}</span>
<span class="number"> 23</span>
<span class="number"> 24</span>
<span class="number"> 25</span>    <span class="c">//-----------------------------Getting mouse clic and axes----------------------------</span>
<span class="number"> 26</span>    <span class="k1">if</span><span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_AXES<span class="k2">)</span>
<span class="number"> 27</span>    <span class="k2">{</span>
<span class="number"> 28</span>      mouseX <span class="k3">=</span> event.mouse.x<span class="k2">;</span>
<span class="number"> 29</span>      mouseY <span class="k3">=</span> event.mouse.y<span class="k2">;</span>
<span class="number"> 30</span>    <span class="k2">}</span>
<span class="number"> 31</span>
<span class="number"> 32</span>    <span class="k1">if</span><span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_BUTTON_DOWN<span class="k2">)</span>
<span class="number"> 33</span>      <span class="k1">if</span><span class="k2">(</span>event.mouse.button <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 34</span>        clic <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 35</span>
<span class="number"> 36</span>    <span class="k1">if</span><span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_BUTTON_UP<span class="k2">)</span>
<span class="number"> 37</span>      <span class="k1">if</span><span class="k2">(</span>event.mouse.button <span class="k3">&amp;</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 38</span>        clic <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 39</span>    <span class="c">//---------------------------Getting mouse clic and axes END--------------------------</span>
<span class="number"> 40</span>
<span class="number"> 41</span>    ScreenManager::get_instance<span class="k2">(</span><span class="k2">)</span>.handle_input<span class="k2">(</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span>
<span class="number"> 43</span>    <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span>
<span class="number"> 44</span>    <span class="k2">{</span>
<span class="number"> 45</span>      <span class="k1">while</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_peek_next_event"><span class="a">al_peek_next_event</span></a><span class="k2">(</span>eventQueue, <span class="k3">&amp;</span>nextEvent<span class="k2">)</span>
<span class="number"> 46</span>        <span class="k3">&amp;</span><span class="k3">&amp;</span> nextEvent.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER
<span class="number"> 47</span>        <span class="k3">&amp;</span><span class="k3">&amp;</span> nextEvent.timer.source <span class="k3">=</span><span class="k3">=</span> event.timer.source<span class="k2">)</span>
<span class="number"> 48</span>        <a href="http://www.allegro.cc/manual/al_drop_next_event"><span class="a">al_drop_next_event</span></a><span class="k2">(</span>eventQueue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 49</span>      <span class="c">//--------------------------------Updating elements-------------------------------</span>
<span class="number"> 50</span>      ScreenManager::get_instance<span class="k2">(</span><span class="k2">)</span>.update<span class="k2">(</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 51</span>      <span class="c">//------------------------------Updating elements END-----------------------------</span>
<span class="number"> 52</span>      redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 53</span>    <span class="k2">}</span>
<span class="number"> 54</span>    <span class="c">//---------------------------------Getting events END---------------------------------</span>
<span class="number"> 55</span>
<span class="number"> 56</span>
<span class="number"> 57</span>    <span class="c">//---------------------------------Redrawing elements---------------------------------</span>
<span class="number"> 58</span>    <span class="k1">if</span><span class="k2">(</span>redraw<span class="k2">)</span>
<span class="number"> 59</span>    <span class="k2">{</span>
<span class="number"> 60</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">235</span>, <span class="n">235</span>, <span class="n">235</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 61</span>
<span class="number"> 62</span>      <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span><span class="n">7</span>, <span class="n">85</span>, <span class="n">499</span>, <span class="n">815</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">235</span>, <span class="n">235</span>, <span class="n">235</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 63</span>
<span class="number"> 64</span>
<span class="number"> 65</span>      <span class="c">//game rendering part</span>
<span class="number"> 66</span>      <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>example, <span class="n">0</span>, <span class="n">74</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 67</span>
<span class="number"> 68</span>      draw_to_gameBuffer<span class="k2">(</span>gameBuffer, display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 69</span>      <a href="http://www.allegro.cc/manual/al_draw_scaled_bitmap"><span class="a">al_draw_scaled_bitmap</span></a><span class="k2">(</span>gameBuffer, <span class="n">0</span>, <span class="n">0</span>, gameBufferWidth, gameBufferHeight, gameBufferX, gameBufferY, currentGameBufferW, currentGameBufferH, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 70</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>      redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 73</span>    <span class="k2">}</span>
<span class="number"> 74</span>    <span class="c">//-------------------------------Redrawing elements END-------------------------------</span>
<span class="number"> 75</span>  <span class="k2">}</span>
<span class="number"> 76</span>  <span class="c">//-------------------------------------Main loop END--------------------------------------</span>
</div></div><p>

the only thing it changed in the whole code it&#39;s the &quot;nextEvent&quot; stuff shown in my previous reply.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Mon, 15 Jan 2018 11:39:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The thing is, my example drops extra timer events automatically. It only draws once, even if there are multiple timer events. It just counts them all as one.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 15 Jan 2018 12:38:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Edgar and you all guys, I&#39;ve been lying to you and I feel so dumb now but it&#39;s good to have my dumbness here this way people can learn from my mistakes (I don&#39;t think there&#39;s someone out there that can make more or the same amount of mistakes than me but ok), your example (Edgar Reynaldo) never ran slow, it took a while to execute but runtime was never slow neither had had the input delay, although I thought it was running slow due to the time it took to show something on screen (5 secs maybe?) my code, the one that had the input delay (event queue clogged by the timer events as Mark Oates mentioned) took the same amount of time to show my drawings on screen, therefore, I thought your example had the same issue but I was in a huge mistake, I knew my example had an input delay because the circle I was drawing on the mouse positions had a delay but I never tried the same with your example until now and guess what? yup, you example runs smooth with no delays nor lag and the circle drawn to the mouse positions moves as fast as I move the mouse cursor so... I actually don&#39;t need the &quot;al_drop_next_event()&quot; procedure I just have to have an event loop to iterate while the event queue has something inside, this way I won&#39;t have events left on the queue making every iteration bigger and bigger to iterate through.</p><p>As I said before, you are such a beautiful community to work with and I really appreciate your help and patience with me and my dumbness.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Tue, 16 Jan 2018 12:44:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>So then, I&#39;m not sure what delay you&#39;re experiencing. Startup? It doesn&#39;t display anything for a few seconds? Can you give an example program that does this? With debugging symbols for gdb?</p><p>It may be a little slow to resize the window, due to recreating the bitmaps on each resize, but drawing normally should be pretty quick. The texture changes don&#39;t help.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 16 Jan 2018 18:15:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Nothing to worry it just takes a while to start (my pc is slow with OpenGl flag), the input delay I&#39;m talking about it was in my previous code that clogged the event queue, the resizing it&#39;s fine, with no delays or slowness just the startup takes some seconds to start, I&#39;ll try to create two examples, one with my old game loop and another with the new one.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Tue, 16 Jan 2018 23:29:26 +0000</pubDate>
	</item>
</rss>
