<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Same code - slow on Windows, fast on Linux - timer fires too slow?</title>
		<link>http://www.allegro.cc/forums/view/618372</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 01 Mar 2021 20:20:08 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am using the &quot;standard&quot; Allegro main loop code.</p><p>I set the timer to fire at 60 times per second:</p><p><span class="source-code">m_timer.reset<span class="k2">(</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="k2">;</span></span></p><p>Then, 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="k1">void</span> Application::run<span class="k2">(</span><span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>    <span class="k1">bool</span> done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  4</span>    <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  5</span>    <span class="k1">double</span> old_time <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_time"><span class="a">al_get_time</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>    <span class="k1">double</span> time_now <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  7</span>    <span class="k1">double</span> delta_time <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  8</span>
<span class="number">  9</span>    <span class="k1">uint64_t</span> counted_frames <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</span>    OnUserCreate<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>    
<span class="number"> 13</span>    <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>m_timer.get<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</span>    <span class="k1">while</span> <span class="k2">(</span><span class="n">1</span><span class="k2">)</span>
<span class="number"> 16</span>    <span class="k2">{</span>
<span class="number"> 17</span>        <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>m_queue.get<span class="k2">(</span><span class="k2">)</span>, <span class="k3">&amp;</span>m_event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span>        m_average_fps <span class="k3">=</span> counted_frames <span class="k3">/</span> <a href="http://www.allegro.cc/manual/al_get_time"><span class="a">al_get_time</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>        <span class="k1">if</span> <span class="k2">(</span>m_average_fps <span class="k3">&gt;</span> <span class="n">2000000</span><span class="k2">)</span>
<span class="number"> 21</span>        <span class="k2">{</span>
<span class="number"> 22</span>            m_average_fps <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 23</span>        <span class="k2">}</span>
<span class="number"> 24</span>
<span class="number"> 25</span>        <span class="k1">switch</span> <span class="k2">(</span>m_event.type<span class="k2">)</span>
<span class="number"> 26</span>        <span class="k2">{</span>
<span class="number"> 27</span>        <span class="k1">case</span> ALLEGRO_EVENT_TIMER:
<span class="number"> 28</span>            time_now <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_time"><span class="a">al_get_time</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>            delta_time <span class="k3">=</span> time_now <span class="k3">-</span> old_time<span class="k2">;</span>
<span class="number"> 30</span>            OnUserUpdate<span class="k2">(</span>delta_time<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>            old_time <span class="k3">=</span> time_now<span class="k2">;</span>
<span class="number"> 32</span>            redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 33</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 34</span>
<span class="number"> 35</span>        <span class="k1">case</span> ALLEGRO_EVENT_KEY_DOWN:
<span class="number"> 36</span>
<span class="number"> 37</span>            <a href="http://www.allegro.cc/manual/al_get_keyboard_state"><span class="a">al_get_keyboard_state</span></a><span class="k2">(</span><span class="k3">&amp;</span>m_keyboard_state<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>            <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_key_down"><span class="a">al_key_down</span></a><span class="k2">(</span><span class="k3">&amp;</span>m_keyboard_state, ALLEGRO_KEY_ESCAPE<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 39</span>            <span class="k2">{</span>
<span class="number"> 40</span>                done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 41</span>            <span class="k2">}</span>
<span class="number"> 42</span>            <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_key_down"><span class="a">al_key_down</span></a><span class="k2">(</span><span class="k3">&amp;</span>m_keyboard_state, ALLEGRO_KEY_P<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 43</span>            <span class="k2">{</span>
<span class="number"> 44</span>                save_screenshot<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span>            <span class="k2">}</span>
<span class="number"> 46</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 47</span>        <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_CLOSE:
<span class="number"> 48</span>            done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 49</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 50</span>        <span class="k2">}</span>
<span class="number"> 51</span>
<span class="number"> 52</span>        <span class="k1">if</span> <span class="k2">(</span>done<span class="k2">)</span>
<span class="number"> 53</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 54</span>
<span class="number"> 55</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>m_queue.get<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 56</span>        <span class="k2">{</span>
<span class="number"> 57</span>            render<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>            redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 59</span>        <span class="k2">}</span>
<span class="number"> 60</span>        <span class="k3">+</span><span class="k3">+</span>counted_frames<span class="k2">;</span>
<span class="number"> 61</span>    <span class="k2">}</span>
<span class="number"> 62</span><span class="k2">}</span>
</div></div><p>

In my Game object is the render function, that gets called when the timer fires:</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">bool</span> Game::OnUserRender<span class="k2">(</span><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">uint64_t</span> frames <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  4</span>    <span class="k1">static</span> <span class="k1">double</span> average_fps <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  5</span>
<span class="number">  6</span>    average_fps <span class="k3">=</span> frames <span class="k3">/</span> <a href="http://www.allegro.cc/manual/al_get_time"><span class="a">al_get_time</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>    
<span class="number">  8</span>    <a href="http://www.allegro.cc/manual/al_draw_textf"><span class="a">al_draw_textf</span></a><span class="k2">(</span>m_font.get<span class="k2">(</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/al_color_name"><span class="a">al_color_name</span></a><span class="k2">(</span><span class="s">"blanchedalmond"</span><span class="k2">)</span>, <span class="n">10</span>.<span class="n">0</span>, <span class="n">60</span>.<span class="n">0</span>, <span class="n">0</span>, <span class="s">"Deltatime : %.2f"</span>, m_delta_time<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>    <a href="http://www.allegro.cc/manual/al_draw_textf"><span class="a">al_draw_textf</span></a><span class="k2">(</span>m_font.get<span class="k2">(</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/al_color_name"><span class="a">al_color_name</span></a><span class="k2">(</span><span class="s">"blanchedalmond"</span><span class="k2">)</span>, <span class="n">10</span>.<span class="n">0</span>, <span class="n">90</span>.<span class="n">0</span>, <span class="n">0</span>, <span class="s">"FPS : %.2f"</span>, m_average_fps<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>    <a href="http://www.allegro.cc/manual/al_draw_textf"><span class="a">al_draw_textf</span></a><span class="k2">(</span>m_font.get<span class="k2">(</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/al_color_name"><span class="a">al_color_name</span></a><span class="k2">(</span><span class="s">"blanchedalmond"</span><span class="k2">)</span>, <span class="n">10</span>.<span class="n">0</span>, <span class="n">120</span>.<span class="n">0</span>, <span class="n">0</span>, <span class="s">"Actual FPS : %.2f"</span>, average_fps<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>
<span class="number"> 12</span>    <span class="c">//m_pixelator.get()-&gt;blendAlpha(al_color_name("darkred"), 0.04);</span>
<span class="number"> 13</span>
<span class="number"> 14</span>    <span class="k3">+</span><span class="k3">+</span>frames<span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 17</span><span class="k2">}</span>
</div></div><p>

On Windows, no matter how fast I configure the timer, it refuses to fire beyond 25 frames per second. Or, am I missing something obvious? <img src="http://www.allegro.cc/forums/smileys/huh.gif" alt="???" /></p><p>On Linux, it works fine. Even in debug mode: 60 FPS, even for the render.</p><p>I am attaching a screenshot of it running in Linux. And I will add a screenshot from my Windows box after I reboot.</p><p>By the way, I am using Allegro 5.2.6</p><p>Edit1:<br />Attached screenshot from Windows.<br />Notice how the render FPS is only 25 / 26.<br />It doesn&#39;t matter what mode I compile it in, debug or release.</p><p>Edit2:<br />Attached another screenshot, showing that it stays the same, even when I set the timer to 6000 frames per second <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jacob Moena)</author>
		<pubDate>Fri, 26 Feb 2021 03:12:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p> &lt;code&gt; blocks </p><p><a href="https://www.allegro.cc/mockup.html">https://www.allegro.cc/mockup.html</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Fri, 26 Feb 2021 03:53:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the tip! <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>I turned vsync off, and it still locks the trigger at 25.</p><p>Now I will figure out how to run fullscreen, and see if it&#39;s the same issue. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jacob Moena)</author>
		<pubDate>Fri, 26 Feb 2021 03:58:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yeah sorry i misread that. 25 shouldn&#39;t be vsync related.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Fri, 26 Feb 2021 04:01:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I figured it out! <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /></p><p>It turns out that <span class="source-code"><a href="http://www.allegro.cc/manual/al_draw_scaled_bitmap"><span class="a">al_draw_scaled_bitmap</span></a></span> is doggone slow. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><p>I replaced it with <span class="source-code"><a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a></span> but that is not something I am happy with.</p><p>I am writing an old school raycaster, and my display buffer is 320 * 200.</p><p>My application takes a scaling factor which is what the window gets created with: width and height multiplied by the scale.<br />I am using a scale of four at the moment.</p><p>Is there any other way to scale that to fit the screen?</p><p>Here is the code that I left out from the original post:</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> Application::render<span class="k2">(</span><span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>    <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>m_display_buffer.get<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</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">  5</span>
<span class="number">  6</span>    update_display_buffer<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</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>m_display.get<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>    <span class="c">//al_draw_scaled_bitmap(m_display_buffer.get(), 0, 0, m_width, m_height, 0, 0, m_width * m_scale, m_height * m_scale, 0);</span>
<span class="number"> 10</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>m_display_buffer.get<span class="k2">(</span><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="number"> 11</span>    OnUserRender<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>
<span class="number"> 13</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>m_title_font.get<span class="k2">(</span><span class="k2">)</span>, <a href="http://www.allegro.cc/manual/al_color_name"><span class="a">al_color_name</span></a><span class="k2">(</span><span class="s">"blanchedalmond"</span><span class="k2">)</span>, <span class="n">10</span>.<span class="n">0</span>, <span class="n">10</span>.<span class="n">0</span>, <span class="n">0</span>, <span class="s">"PixelWolf"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>
<span class="number"> 15</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"> 16</span><span class="k2">}</span>
</div></div><p>

I attached proof that it works, but it is obviously not acceptable for my application <img src="http://www.allegro.cc/forums/smileys/kiss.gif" alt=":-*" /></p><p>Funny that <span class="source-code"><a href="http://www.allegro.cc/manual/al_draw_scaled_bitmap"><span class="a">al_draw_scaled_bitmap</span></a></span> is working fine on Linux, what gives?</p><p>EDIT:</p><p>As it turns out, when I use <span class="source-code"><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_VIDEO_BITMAP <span class="k3">|</span> ALLEGRO_NO_PRESERVE_TEXTURE<span class="k2">)</span><span class="k2">;</span></span> it works!</p><p>I was using <span class="source-code">ALLEGRO_MEMORY_BITMAP</span> because I read  that it was way faster when you are making use of direct pixel access, but apparently it isn&#39;t.</p><p>I am happy now! It works splendidly - move along <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /><br />Also, 40 FPS in debug mode is rather nice as well, considering that my code is laden with STL and I am using Visual Studio ;p
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jacob Moena)</author>
		<pubDate>Fri, 26 Feb 2021 09:56:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>40 fps still sounds incredibly slow but I don&#39;t know what your hardware is, and how much drawing you&#39;re doing.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Sat, 27 Feb 2021 01:54:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Visual Studio is incredibly slow in debug mode when using the STL.<br />Even when setting _NO_DEBUG_HEAP to 1.<br />GCC is much faster <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>Edit:<br />What am I doing?</p><p>Well . . .<br />I am plotting pixels. Each frame I update the display_buffer, like 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="k1">void</span> Application::update_display_buffer<span class="k2">(</span><span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>    m_screenlock <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>m_display_buffer.get<span class="k2">(</span><span class="k2">)</span>, ALLEGRO_PIXEL_FORMAT_ANY, ALLEGRO_LOCK_WRITEONLY<span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>
<span class="number">  5</span>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> y <span class="k3">&lt;</span> m_height<span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>y<span class="k2">)</span>
<span class="number">  6</span>    <span class="k2">{</span>
<span class="number">  7</span>        <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> x <span class="k3">&lt;</span> m_width<span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>x<span class="k2">)</span>
<span class="number">  8</span>        <span class="k2">{</span>
<span class="number">  9</span>            <a href="http://www.allegro.cc/manual/ALLEGRO_COLOR"><span class="a">ALLEGRO_COLOR</span></a> color <span class="k3">=</span> m_pixelator.get<span class="k2">(</span><span class="k2">)</span><span class="k3">-</span><span class="k3">&gt;</span>getPixel<span class="k2">(</span>x, y<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>            <a href="http://www.allegro.cc/manual/al_put_pixel"><span class="a">al_put_pixel</span></a><span class="k2">(</span>x, y, color<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>        <span class="k2">}</span>
<span class="number"> 12</span>    <span class="k2">}</span>
<span class="number"> 13</span>
<span class="number"> 14</span>    <a href="http://www.allegro.cc/manual/al_unlock_bitmap"><span class="a">al_unlock_bitmap</span></a><span class="k2">(</span>m_display_buffer.get<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span><span class="k2">}</span>
</div></div><p>

The &quot;Pixelator&quot; keeps a lot of pixels in buffers, and I use it to build the scene. I can copy, plot, draw, swap buffers, ... I am using it to write a raycaster. I got good results in SDL, SFML was too slow, and Raylib was nice, but could not provide what I need.<br />I landed on Allegro in the end, and I ported to code over in less than two days, and I think I have finally found a framework I can be happy with.<br />Funny thing, Allegro (with Djgpp) was what I started out with, back in the day.</p><p>My machine is not terrible, but certainly not top of the line: AMD Ryzen 3 1200 Quad-Core Processor 3.10 GHz, with 8 gigs of RAM, and sporting a GeForce GTX 1050 TI with (I think) 4 gb video RAM.</p><p>I will probably using Allegro threads to speed up the raycasting, maybe.<br />I will post about my project soon, when I have ported everything over and it runs properly. <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /></p><p>Edit:<br />I am now on my Linux box. GCC runs this at 60 frames per second in debug mode.<br />So, blame it on VC for being overly burdensome with debug code.<br />I am not really worried. For now anyway <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jacob Moena)</author>
		<pubDate>Sat, 27 Feb 2021 05:23:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>IMHO, you should ditch VS and go for MinGW-W64 and Code::Blocks, for Windows at least.</p><p>Uploading 320x240 to the video card with WRITE_ONLY should be pretty fast, no matter what machine you&#39;re on. It&#39;s downloading from the video card that is slow.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 28 Feb 2021 06:43:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>No, definitely not Code::Blocks, it doesn&#39;t cut it. I tried it, and it didn&#39;t impress me. I don&#39;t intend to bash it, because it is open source, and all. And choice is a good  thing!<br />MinGW-W64 is great, but I prefer to use GCC on Linux, or - put another way - why GNU for Windows when you can GNU the real deal? <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>However, perhaps I will try and hook up Clang with Visual Studio. Thanks for encouragement <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /></p><p>Edit:<br />I switched to <span class="source-code">LLVM <span class="k2">(</span>clang-cl<span class="k2">)</span></span> in Visual Studio, but - alas! - the Allegro Nuget packages are only configured for v141 and v142. A pity. I will have to look into that RealSoonNow, won&#39;t I? <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>Edit_Again:<br />I tried MinW-64, and is GCC 8 really the latest version? I can&#39;t use it because it doesn&#39;t fully support C++17. Unfortunately. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> Oh, I see that Msys has it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jacob Moena)</author>
		<pubDate>Sun, 28 Feb 2021 22:34:27 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m a bit disappointed that MinGW-W64 is still on GCC 8 too. But I only use C++11 so it doesn&#39;t really bother me.</p><p>What don&#39;t you like about CB? What can VS do that CB can&#39;t? VS&#39;s idea of projects and solutions is an abomination in my opinion, and it&#39;s not a very good IDE. It&#39;s GUI sucks and is really inefficient if you ask me.</p><p>Can&#39;t deal with the STL? Sounds like a good enough reason to dump it for me. But is that VS&#39;s fault or cl?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 01 Mar 2021 02:57:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The debugging environment in Visual Studio is still unmatched <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>Visual Studio 2013 - 2015 was bad. But I am happy with Visual Studio 2019.<br />With Nuget, using Allegro is as easy to get up and running as it is on Linux with CMake.</p><p>The dated WxWidgets interface of Code::Blocks is not something that will win me over. I generally prefer the native option on my platforms. So Visual Studio on Windows, or Visual Studio Code with CMake.<br />When I want to use GCC, I will do that on my Linux box.<br />KDevelop once in a while, but mostly VSCode. That editor is snappy <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>Edit:<br />That said, if I could afford to, I would switch to CLion. That is the best IDE for C and C++ programming, in my very humble opinion <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jacob Moena)</author>
		<pubDate>Mon, 01 Mar 2021 03:55:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I do all my debugging with GDB. Does everything I need. I use it from the command line though, no interactive GUI for the debugger, but CB would work if I wanted to use it that way.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 01 Mar 2021 04:00:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I very much prefer to work in a console in Linux <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>Also, I have to admit that I have yet to dive into the mysteries of GDB. I am aware that it can be quite effective, provided you know what you&#39;re doing (which I don&#39;t).<br />I usually get by with VSCode which actually has a decent GUI interface to GDB.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jacob Moena)</author>
		<pubDate>Mon, 01 Mar 2021 04:06:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I will admit that I don&#39;t like CB on Linux much. Right click drag scrolling doesn&#39;t work, which is one of my most necessary and favorite features of CB on Windows.</p><p>EDIT<br />I still haven&#39;t found an IDE I like to use on Linux yet, recommendations?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 01 Mar 2021 04:14:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you have the money, CLion. I am sure they&#39;ve got a trial that you can install. I found the Clang integration to be sublime! <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /></p><p>I am switching between KDevelop and VSCode (not an IDE), but used to be quite happy with QtCreator.<br />I tried it recently, after having been away from C and C++ programming for a long while, and they changed their CMake support to the point of me wondering if they don&#39;t intend to support CMake like they did. I don&#39;t care for their native project format, so I guess I am also shopping for a decent IDE.</p><p>But, if you haven&#39;t tried KDevelop and QtCreator, please do.</p><p>Edit:<br />If Visual Studio solution and project files are an abomination, then Code::Blocks files are too. They are practically identical: simple XML files <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /></p><p>Yes, they were awful once upon a time, but that was long ago.<br />Take a look -&gt; <a href="https://github.com/jacmoe/pxlwolf">https://github.com/jacmoe/pxlwolf</a></p><p>The whole solution consists of <span class="source-code">PixelWolf.sln</span>, <span class="source-code">PixelWolf.vcxproj</span>, and <span class="source-code">PixelWolf.vcxproj.filters</span>.</p><p>That said, it is very atypical of me to commit any project files to a repository because I usually use CMake and treat those as generated build files. But not with Allegro as I use Nuget with it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Jacob Moena)</author>
		<pubDate>Mon, 01 Mar 2021 06:04:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>.cbp files are self contained and don&#39;t end up with 10 different directories of crap in them like VS. Nothing wrong with XML when it is used properly. And CB .workspace files are super simple too. Project management is NOT a strong suit of VS.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 01 Mar 2021 07:48:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>On linux I use gvim, with a custom .gvimrc for better readability.</p><p>I&#39;m also having a script called gtab that open things inside a tab, and support multiple gvim instances. It will be uploaded to a git before the end of the day, because I like to share my <span class="cuss"><span><span class="cuss"><span>shit</span></span></span></span>. (Done: <a href="https://github.com/GullCode/gtabforgvim">https://github.com/GullCode/gtabforgvim</a> )</p><p>I have CodeBlocks installed but I&#39;m not starting it a lot, and QTCreator / AndroidStudio because I need them for some projects that were already done with them.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Mon, 01 Mar 2021 20:20:08 +0000</pubDate>
	</item>
</rss>
