<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Complications when drawing FPS</title>
		<link>http://www.allegro.cc/forums/view/616606</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 21 Nov 2016 03:20:23 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I am working on a Blasteroids clone in Allegro 5 (Win32, MSVC), courtesy of Head First C&#39;s last C Lab Project.</p><p>So far I&#39;ve gotten to the point of successfully drawing the spaceship on the display, and I can move it around as well with transformations.</p><p>However, when I wanted to add an FPS display in the top right corner, I&#39;ve hit a roadblock. Apparently, when using al_draw_textf() to display the current FPS, it uses the already set transformations from the spaceship. So when I move the ship, the FPS display moves with it.</p><p>I am using separate functions to move the spaceship and to draw the FPS, and they are in different files as well (but the same thread).</p><p>I&#39;m guessing this has to do with bitmaps, and everything that I draw on the screen and want to have behaving independently from other objects has to be drawn to their respective bitmaps. (Please correct me if I&#39;m wrong.)</p><p>I&#39;ve gone through the several example programs bundled with Allegro but couldn&#39;t find a clean-cut solution as the code in those included extra noise/features that made it difficult to extract the only information that I need. Also learned about hardware and software rendering, and now got confused on which one to use (to be honest I have no idea which one I&#39;m using right now either).</p><p>Now unfortunately I don&#39;t know too much about bitmaps, hardware/software rendering, etc. to solve this myself, so I ask for your help.</p><p>Drawing from spaceship.c:
</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_spaceship<span class="k2">(</span>Spaceship <span class="k3">*</span>ship<span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>
<span class="number">  3</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_TRANSFORM"><span class="a">ALLEGRO_TRANSFORM</span></a> transform<span class="k2">;</span>
<span class="number">  4</span>  <a href="http://www.allegro.cc/manual/al_identity_transform"><span class="a">al_identity_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>transform<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>  <a href="http://www.allegro.cc/manual/al_rotate_transform"><span class="a">al_rotate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>transform, ship-&gt;heading<span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>  <a href="http://www.allegro.cc/manual/al_translate_transform"><span class="a">al_translate_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>transform, ship-&gt;sx, ship-&gt;sy<span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>  <a href="http://www.allegro.cc/manual/al_use_transform"><span class="a">al_use_transform</span></a><span class="k2">(</span><span class="k3">&amp;</span>transform<span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>  <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="k3">-</span><span class="n">8</span>, <span class="n">9</span>, <span class="n">0</span>, <span class="k3">-</span><span class="n">11</span>, ship-&gt;color, <span class="n">3</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>  <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">0</span>, <span class="k3">-</span><span class="n">11</span>, <span class="n">8</span>, <span class="n">9</span>, ship-&gt;color, <span class="n">3</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>  <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="k3">-</span><span class="n">6</span>, <span class="n">4</span>, <span class="k3">-</span><span class="n">1</span>, <span class="n">4</span>, ship-&gt;color, <span class="n">3</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>  <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">6</span>, <span class="n">4</span>, <span class="n">1</span>, <span class="n">4</span>, ship-&gt;color, <span class="n">3</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span><span class="k2">}</span>
</div></div><p>

Relevant parts of main.c:
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="k1">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   2</span><span class="k1">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>event_queue <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   3</span><span class="k1">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   4</span><span class="k1">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>dbuf <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   5</span><span class="k1">static</span> Spaceship <span class="k3">*</span>theShip <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   6</span><span class="k1">static</span> <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">   7</span>
<span class="number">   8</span><span class="k1">const</span> <span class="k1">float</span> FPS <span class="k3">=</span> <span class="n">60</span><span class="k2">;</span>
<span class="number">   9</span><span class="k1">const</span> <span class="k1">int</span> screenWidth <span class="k3">=</span> <span class="n">640</span><span class="k2">;</span>
<span class="number">  10</span><span class="k1">const</span> <span class="k1">int</span> screenHeight <span class="k3">=</span> <span class="n">480</span><span class="k2">;</span>
<span class="number">  11</span>
<span class="number">  12</span><span class="k1">void</span> init_game<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  13</span><span class="k2">{</span>  
<span class="number">  14</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> 
<span class="number">  15</span>    abort_game<span class="k2">(</span><span class="s">"Failed to initialize allegro"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  16</span>
<span class="number">  17</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  18</span>    abort_game<span class="k2">(</span><span class="s">"Failed to install keyboard"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  19</span>
<span class="number">  20</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> FPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  21</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>timer<span class="k2">)</span>
<span class="number">  22</span>    abort_game<span class="k2">(</span><span class="s">"Failed to create timer"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  23</span>
<span class="number">  24</span>  <a href="http://www.allegro.cc/manual/al_set_new_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">  25</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>screenWidth, screenHeight<span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span>
<span class="number">  27</span>    abort_game<span class="k2">(</span><span class="s">"Failed to create display"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span>
<span class="number">  29</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">  30</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>event_queue<span class="k2">)</span>
<span class="number">  31</span>    abort_game<span class="k2">(</span><span class="s">"Failed to create event queue"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  32</span>
<span class="number">  33</span>  <a href="http://www.allegro.cc/manual/al_init_font_addon"><span class="a">al_init_font_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  34</span>
<span class="number">  35</span>  <a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a> <span class="k3">=</span> al_create_builtin_font<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">)</span>
<span class="number">  37</span>    abort_game<span class="k2">(</span><span class="s">"Failed to initialize builtin font"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  38</span>
<span class="number">  39</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>event_queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</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>event_queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</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>event_queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span><span class="k2">}</span>
<span class="number">  43</span>
<span class="number">  44</span><span class="k1">void</span> drawFPS<span class="k2">(</span><span class="k1">double</span> <span class="k3">*</span>old_time<span class="k2">)</span>
<span class="number">  45</span><span class="k2">{</span>
<span class="number">  46</span>  <span class="k1">double</span> new_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">  47</span>  <span class="k1">double</span> delta <span class="k3">=</span> new_time <span class="k3">-</span> <span class="k3">*</span>old_time<span class="k2">;</span>
<span class="number">  48</span>  <span class="k1">double</span> fps <span class="k3">=</span> <span class="k2">(</span><span class="n">1</span> <span class="k3">/</span> <span class="k2">(</span>delta <span class="k3">*</span> <span class="n">1000</span><span class="k2">)</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">1000</span><span class="k2">;</span>
<span class="number">  49</span>  <a href="http://www.allegro.cc/manual/al_draw_textf"><span class="a">al_draw_textf</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <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="n">0</span>, <span class="n">0</span>, ALLEGRO_ALIGN_RIGHT, <span class="s">"FPS: %d"</span>, <span class="k2">(</span><span class="k1">int</span><span class="k2">)</span> fps<span class="k2">)</span><span class="k2">;</span>
<span class="number">  50</span>  <span class="k3">*</span>old_time <span class="k3">=</span> new_time<span class="k2">;</span>
<span class="number">  51</span><span class="k2">}</span>
<span class="number">  52</span>
<span class="number">  53</span><span class="k1">void</span> update_graphics<span class="k2">(</span><span class="k1">double</span> <span class="k3">*</span>old_time<span class="k2">)</span>
<span class="number">  54</span><span class="k2">{</span>
<span class="number">  55</span>  <span class="c">// full redraw</span>
<span class="number">  56</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_rgba_f"><span class="a">al_map_rgba_f</span></a><span class="k2">(</span><span class="n">0</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">  57</span>  draw_spaceship<span class="k2">(</span>theShip<span class="k2">)</span><span class="k2">;</span>
<span class="number">  58</span>  <span class="c">// draw bullets</span>
<span class="number">  59</span>  <span class="c">// draw asteroids</span>
<span class="number">  60</span>  <span class="c">// draw GUI</span>
<span class="number">  61</span>  drawFPS<span class="k2">(</span>old_time<span class="k2">)</span><span class="k2">;</span>
<span class="number">  62</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">  63</span><span class="k2">}</span>
<span class="number">  64</span>
<span class="number">  65</span><span class="k1">void</span> init_bitmap<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  66</span><span class="k2">{</span>
<span class="number">  67</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_primitives_addon"><span class="a">al_init_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  68</span>    abort_game<span class="k2">(</span><span class="s">"Failed to initialize the primitives addon"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  69</span>
<span class="number">  70</span>  dbuf <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>screenWidth, screenHeight<span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>dbuf<span class="k2">)</span>
<span class="number">  72</span>    abort_game<span class="k2">(</span><span class="s">"Failed to create bitmap"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>
<span class="number">  74</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>dbuf<span class="k2">)</span><span class="k2">;</span>
<span class="number">  75</span>  <a href="http://www.allegro.cc/manual/al_set_blender"><span class="a">al_set_blender</span></a><span class="k2">(</span>ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_ZERO<span class="k2">)</span><span class="k2">;</span>
<span class="number">  76</span>  <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>dbuf, <span class="n">0</span>.<span class="n">0</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">  77</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">  78</span><span class="k2">}</span>
<span class="number">  79</span>
<span class="number">  80</span><span class="k1">void</span> game_loop<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  81</span><span class="k2">{</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> isRunning <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  84</span>
<span class="number">  85</span>  init_bitmap<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  86</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  87</span>  theShip <span class="k3">=</span> init_spaceship<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  88</span>
<span class="number">  89</span>  <span class="c">// initial ship position</span>
<span class="number">  90</span>  theShip-&gt;sx <span class="k3">=</span> screenWidth <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  91</span>  theShip-&gt;sy <span class="k3">=</span> screenHeight <span class="k3">/</span> <span class="n">2</span><span class="k2">;</span>
<span class="number">  92</span>
<span class="number">  93</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">  94</span>
<span class="number">  95</span>  <span class="c">/* start game loop */</span>
<span class="number">  96</span>  <span class="k1">while</span> <span class="k2">(</span>isRunning<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  97</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">  98</span>
<span class="number">  99</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>event_queue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 100</span>
<span class="number"> 101</span>    <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN<span class="k2">)</span>
<span class="number"> 102</span>      <span class="c">// input handling</span>
<span class="number"> 103</span>
<span class="number"> 104</span>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_UP<span class="k2">)</span>
<span class="number"> 105</span>      <span class="c">// input handling</span>
<span class="number"> 106</span>
<span class="number"> 107</span>    <span class="k1">else</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="k2">{</span>
<span class="number"> 108</span>      redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 109</span>      <span class="c">// acting on input</span>
<span class="number"> 110</span>    <span class="k2">}</span>
<span class="number"> 111</span>
<span class="number"> 112</span>    <span class="k1">else</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"> 113</span>      isRunning <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 114</span>
<span class="number"> 115</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>event_queue<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 116</span>      redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 117</span>      update_graphics<span class="k2">(</span><span class="k3">&amp;</span>old_time<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 118</span>    <span class="k2">}</span>
<span class="number"> 119</span>  <span class="k2">}</span>
<span class="number"> 120</span><span class="k2">}</span>
</div></div><p>

Any help would be greatly appreciated! <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (pryon_)</author>
		<pubDate>Sun, 20 Nov 2016 19:24:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Make a new identity transform, and use it for your fps code. To allegro it does not matter if you have drawing code on different places. All of them share the same transformation. If you change it on one part of your code, all the next drawing calls will use the new one.</p><p>By making a new identity transform, you are resetting the transform. It does not matter you lost the previous one because your spaceship will create a new one in its drawing code.</p><p>By the looks of it, you are using hardware rendering. Software rendering uses the CPU, and Hardware uses the GPU. Allegro 4 used software, Allegro 5 by default uses hardware. If you try really hard, you can use software on 5… but it will be really slow.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Rodolfo Lam)</author>
		<pubDate>Sun, 20 Nov 2016 19:53:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you for your answer!</p><p>I added a new transformation and everything works perfectly now. Apparently I was wrong with the bitmap theory.</p><p>I&#39;m guessing this also means that I don&#39;t need to create a bitmap for each asteroid/blast, I just need separate transformations for each of them, which is really good news.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (pryon_)</author>
		<pubDate>Mon, 21 Nov 2016 00:43:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>More specifically, there are two active transformations in use at any one time. They are linked to the target bitmap. When you change the target bitmap, you change the transformations. There is a view transform, and a projection transform for each bitmap.</p><p>You can draw each asteroid with it&#39;s own transformation, but you can achieve the same thing through regular allegro functions like al_draw_rotated_bitmap and the like...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 21 Nov 2016 03:20:23 +0000</pubDate>
	</item>
</rss>
