<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Allegro and OpenGL Drawing Problem</title>
		<link>http://www.allegro.cc/forums/view/617199</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 03 Jan 2018 18:29:32 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m working on a large project that was initially developed on an OSX machine but is now being ported to windows. I expected some degree of difficulty in porting the code, but I solved all issues pertaining to problematic includes and have already made sure to include the proper OpenGL libraries. </p><p>My current issue is that, for example, with the following code segment which should display a Quad that takes up most of the screen displays nothing, or, rather, it displays the clearing color (blue or green) but never the quad. Peculiarly, this same code works on my OSX machine. </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> init<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number">  2</span>    glMatrixMode<span class="k2">(</span>GL_PROJECTION<span class="k2">)</span><span class="k2">;</span>
<span class="number">  3</span>    glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>    glOrtho<span class="k2">(</span><span class="n">0</span>, viewWidth, <span class="n">0</span>, viewHeight, <span class="k3">-</span><span class="n">1</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>    glMatrixMode<span class="k2">(</span>GL_MODELVIEW<span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>    glClearColor <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="n">0</span>.<span class="n">0</span>, <span class="n">1</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>    glColor3f<span class="k2">(</span><span class="n">1</span>.<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">  8</span>    glDisable<span class="k2">(</span>GL_DEPTH_TEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span><span class="k2">}</span>
<span class="number"> 10</span>
<span class="number"> 11</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"> 12</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"> 13</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"> 14</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"> 15</span>
<span class="number"> 16</span>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> winWidth <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"\t"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> winHeight <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 17</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> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span>winWidth, winHeight<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>  
<span class="number"> 19</span>    init<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// Init OpenGL vars</span>
<span class="number"> 20</span>
<span class="number"> 21</span>  <span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span>, target <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 22</span>  
<span class="number"> 23</span>  <span class="k1">while</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 24</span>    <span class="k1">if</span> <span class="k2">(</span>j <span class="k3">&gt;</span> <span class="n">750</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 25</span>      glClear<span class="k2">(</span>GL_COLOR_BUFFER_BIT<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</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">255</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</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"> 28</span>      <span class="k1">if</span> <span class="k2">(</span>j <span class="k3">&lt;</span> <span class="n">1500</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 29</span>        j<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 30</span>      <span class="k2">}</span>
<span class="number"> 31</span>      <span class="k1">else</span> <span class="k2">{</span>
<span class="number"> 32</span>        j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 33</span>      <span class="k2">}</span>
<span class="number"> 34</span>    <span class="k2">}</span>
<span class="number"> 35</span>    <span class="k1">else</span><span class="k2">{</span>
<span class="number"> 36</span>      glClear<span class="k2">(</span>GL_COLOR_BUFFER_BIT<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</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">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>      glColor3ub<span class="k2">(</span><span class="n">125</span>, <span class="n">125</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>      glBegin<span class="k2">(</span>GL_QUADS<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span>      glVertex2i<span class="k2">(</span><span class="n">10</span>, <span class="n">10</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>      glVertex2i<span class="k2">(</span>viewWidth <span class="k3">-</span> <span class="n">10</span>, <span class="n">10</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span>      glVertex2i<span class="k2">(</span>viewWidth <span class="k3">-</span> <span class="n">10</span>, viewHeight <span class="k3">-</span> <span class="n">10</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 43</span>      glVertex2i<span class="k2">(</span><span class="n">10</span>, viewHeight <span class="k3">-</span> <span class="n">10</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 44</span>      glEnd<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span>      <a href="http://www.allegro.cc/manual/al_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"> 46</span>      j<span class="k3">+</span><span class="k3">+</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="k2">}</span>
<span class="number"> 51</span><span class="k2">}</span>
</div></div><p>

As it stands, my best guess is that I&#39;ve made some mistake with my includes or I missed something important to setting up OpenGL in Allegro that I didn&#39;t have to do on my OSX machine.</p><p>Also important: I know now that Allegro includes primitives that I should&#39;ve been using from the get-go, but I wanted to use OpenGL for a variety of reasons and so, at the moment, switching to Allegro primitives is not a preferred option. </p><p>Any ideas as to what is going wrong would be appreciated.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jBacher18)</author>
		<pubDate>Tue, 02 Jan 2018 22:27:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Allegro and OpenGL each have their own transformations. Allegro uses OpenGL&#39;s under the hood, but doesn&#39;t respect OpenGL transformations you set yourself.</p><p>In your &#39;init&#39; function you&#39;re not setting an identity matrix for the MODELVIEW matrix. Also, just try to draw one thing once and see if it works or not.</p><p>Mixing Allegro and OpenGL does work, but has some problems when you change global GL state that one or the other was expecting.</p><p>This simple example should show you how to draw your Quad with OpenGL :</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="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="p">#include "allegro5/allegro_opengl.h"</span>
<span class="number">   7</span>
<span class="number">   8</span><span class="k1">int</span> ww <span class="k3">=</span> <span class="n">800</span><span class="k2">;</span>
<span class="number">   9</span><span class="k1">int</span> wh <span class="k3">=</span> <span class="n">600</span><span class="k2">;</span>
<span class="number">  10</span>    
<span class="number">  11</span>
<span class="number">  12</span><span class="k1">void</span> resetOpenGLmatrices<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  13</span>
<span class="number">  14</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">  15</span>    
<span class="number">  16</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">  17</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">  18</span>    
<span class="number">  19</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">3</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  20</span>    
<span class="number">  21</span>    
<span class="number">  22</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="k2">)</span><span class="k2">;</span>
<span class="number">  23</span>    
<span class="number">  24</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> <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">  25</span>    
<span class="number">  26</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">  27</span>    
<span class="number">  28</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">  29</span>    
<span class="number">  30</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>t<span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> <span class="k3">-</span><span class="n">2</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  31</span>    
<span class="number">  32</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">  33</span>    
<span class="number">  34</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>q<span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> <span class="k3">-</span><span class="n">3</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  35</span>    
<span class="number">  36</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">  37</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">  38</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">  39</span>    
<span class="number">  40</span>    <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  41</span>    <span class="k1">bool</span> quit <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  42</span>    
<span class="number">  43</span>    <span class="k1">int</span> shrink <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  44</span>    <span class="k1">int</span> shrink_dir <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  45</span>    
<span class="number">  46</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">  47</span>    
<span class="number">  48</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">  49</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">  50</span>    
<span class="number">  51</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">  52</span>        <span class="k1">if</span> <span class="k2">(</span>redraw<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  53</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">  54</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">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">  55</span>        
<span class="number">  56</span>            resetOpenGLmatrices<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>            
<span class="number">  58</span>            glColor3ub<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">  59</span>            
<span class="number">  60</span>            glBegin<span class="k2">(</span>GL_QUADS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</span>            
<span class="number">  62</span>            glVertex2i<span class="k2">(</span>shrink,shrink<span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>            glVertex2i<span class="k2">(</span>shrink,wh-shrink<span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>            glVertex2i<span class="k2">(</span>ww-shrink,wh-shrink<span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>            glVertex2i<span class="k2">(</span>ww-shrink,shrink<span class="k2">)</span><span class="k2">;</span>
<span class="number">  66</span>            
<span class="number">  67</span>            glEnd<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>            
<span class="number">  69</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">  70</span>            
<span class="number">  71</span>            redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  72</span>        <span class="k2">}</span>
<span class="number">  73</span>        <span class="k1">do</span> <span class="k2">{</span>
<span class="number">  74</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">  75</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">  76</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>quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  77</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>quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span><span class="k2">}</span>
<span class="number">  78</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">  79</span>                redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  80</span>                shrink <span class="k3">+</span><span class="k3">=</span> shrink_dir<span class="k2">;</span>
<span class="number">  81</span>                <span class="k1">if</span> <span class="k2">(</span>shrink <span class="k3">&gt;</span> ww<span class="k3">/</span><span class="n">2</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  82</span>                    shrink <span class="k3">=</span> ww<span class="k3">/</span><span class="n">2</span><span class="k2">;</span>
<span class="number">  83</span>                    shrink_dir <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  84</span>                <span class="k2">}</span>
<span class="number">  85</span>                <span class="k1">if</span> <span class="k2">(</span>shrink <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  86</span>                    shrink <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  87</span>                    shrink_dir <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  88</span>                <span class="k2">}</span>
<span class="number">  89</span>            <span class="k2">}</span>
<span class="number">  90</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">  91</span>        
<span class="number">  92</span>    <span class="k2">}</span>
<span class="number">  93</span>    
<span class="number">  94</span>    
<span class="number">  95</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  96</span><span class="k2">}</span>
<span class="number">  97</span>
<span class="number">  98</span>
<span class="number">  99</span><span class="k1">void</span> resetOpenGLmatrices<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 100</span>    glMatrixMode<span class="k2">(</span>GL_PROJECTION<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>    glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 102</span>    glOrtho<span class="k2">(</span><span class="n">0</span> , ww , <span class="n">0</span> , wh , <span class="k3">-</span><span class="n">1</span> , <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 103</span>    glMatrixMode<span class="k2">(</span>GL_MODELVIEW<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</span>    glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 105</span><span class="k2">}</span>
</div></div><p>

Basically, any time you draw with allegro, you reset the target bitmap, which resets opengl state. Any time you want to draw with opengl, you need to reset the state yourself.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 03 Jan 2018 00:02:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thank you so much, Wonderful explanation. That fixes the problem and provides me a nice example to look back on. Thanks Again!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (jBacher18)</author>
		<pubDate>Wed, 03 Jan 2018 01:22:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I had a similar problem just recently with mixing Allegro and OpenGL. Take a look at <a href="https://www.allegro.cc/forums/thread/617194">this</a> thread for the details.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (kenmasters1976)</author>
		<pubDate>Wed, 03 Jan 2018 11:01:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I managed to get a colored textured spinning cube drawn. Here&#39;s how I did it :</p><p><a href="https://www.allegro.cc/files/attachment/611189">Download src + win32 binary here</a></p><p><span class="remote-thumbnail"><span class="json">{"name":"611190","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/6\/a\/6aab5988fe9697b0f23d12cce0e2da92.png","w":802,"h":641,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/6\/a\/6aab5988fe9697b0f23d12cce0e2da92"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/6/a/6aab5988fe9697b0f23d12cce0e2da92-240.jpg" alt="611190" width="240" height="191" /></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">#include "allegro5/allegro.h"</span>
<span class="number">   3</span><span class="p">#include "allegro5/allegro_memfile.h"</span>
<span class="number">   4</span><span class="p">#include "allegro5/allegro_primitives.h"</span>
<span class="number">   5</span><span class="p">#include "allegro5/allegro_font.h"</span>
<span class="number">   6</span><span class="p">#include "allegro5/allegro_ttf.h"</span>
<span class="number">   7</span><span class="p">#include "allegro5/allegro_color.h"</span>
<span class="number">   8</span><span class="p">#include "allegro5/allegro_opengl.h"</span>
<span class="number">   9</span>
<span class="number">  10</span><span class="p">#include "GL/glu.h"</span>
<span class="number">  11</span><span class="p">#include &lt;cmath&gt;</span>
<span class="number">  12</span><span class="p">#include &lt;cstdio&gt;</span>
<span class="number">  13</span>
<span class="number">  14</span><span class="p">#include "Consola.h"</span>
<span class="number">  15</span>
<span class="number">  16</span>
<span class="number">  17</span><span class="k1">int</span> ww <span class="k3">=</span> <span class="n">800</span><span class="k2">;</span>
<span class="number">  18</span><span class="k1">int</span> wh <span class="k3">=</span> <span class="n">600</span><span class="k2">;</span>
<span class="number">  19</span>    
<span class="number">  20</span>
<span class="number">  21</span>    
<span class="number">  22</span><span class="k1">void</span> resetOpenGLmatrices<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  23</span>
<span class="number">  24</span><span class="k1">struct</span> XYZ <span class="k2">{</span>
<span class="number">  25</span>    <span class="k1">float</span> x,y,z<span class="k2">;</span>
<span class="number">  26</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  27</span>
<span class="number">  28</span>XYZ uc<span class="k2">[</span><span class="n">8</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>
<span class="number">  29</span>    <span class="k2">{</span><span class="k3">-</span><span class="n">0</span>.<span class="n">5f</span>,<span class="k3">-</span><span class="n">0</span>.<span class="n">5f</span>,<span class="k3">-</span><span class="n">0</span>.<span class="n">5f</span><span class="k2">}</span>,
<span class="number">  30</span>    <span class="k2">{</span><span class="k3">-</span><span class="n">0</span>.<span class="n">5f</span>, <span class="n">0</span>.<span class="n">5f</span>,<span class="k3">-</span><span class="n">0</span>.<span class="n">5f</span><span class="k2">}</span>,
<span class="number">  31</span>    <span class="k2">{</span> <span class="n">0</span>.<span class="n">5f</span>, <span class="n">0</span>.<span class="n">5f</span>,<span class="k3">-</span><span class="n">0</span>.<span class="n">5f</span><span class="k2">}</span>,
<span class="number">  32</span>    <span class="k2">{</span> <span class="n">0</span>.<span class="n">5f</span>,<span class="k3">-</span><span class="n">0</span>.<span class="n">5f</span>,<span class="k3">-</span><span class="n">0</span>.<span class="n">5f</span><span class="k2">}</span>,
<span class="number">  33</span>    <span class="k2">{</span> <span class="n">0</span>.<span class="n">5f</span>,<span class="k3">-</span><span class="n">0</span>.<span class="n">5f</span>, <span class="n">0</span>.<span class="n">5f</span><span class="k2">}</span>,
<span class="number">  34</span>    <span class="k2">{</span> <span class="n">0</span>.<span class="n">5f</span>, <span class="n">0</span>.<span class="n">5f</span>, <span class="n">0</span>.<span class="n">5f</span><span class="k2">}</span>,
<span class="number">  35</span>    <span class="k2">{</span><span class="k3">-</span><span class="n">0</span>.<span class="n">5f</span>, <span class="n">0</span>.<span class="n">5f</span>, <span class="n">0</span>.<span class="n">5f</span><span class="k2">}</span>,
<span class="number">  36</span>    <span class="k2">{</span><span class="k3">-</span><span class="n">0</span>.<span class="n">5f</span>,<span class="k3">-</span><span class="n">0</span>.<span class="n">5f</span>, <span class="n">0</span>.<span class="n">5f</span><span class="k2">}</span>
<span class="number">  37</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  38</span>
<span class="number">  39</span><span class="k1">struct</span> <a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a> <span class="k2">{</span>
<span class="number">  40</span>    <span class="k1">float</span> r,g,b,a<span class="k2">;</span>
<span class="number">  41</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  42</span>
<span class="number">  43</span><a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a> cc1<span class="k2">[</span><span class="n">8</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>
<span class="number">  44</span>    <span class="k2">{</span><span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>,
<span class="number">  45</span>    <span class="k2">{</span><span class="n">1</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>,
<span class="number">  46</span>    <span class="k2">{</span><span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>,
<span class="number">  47</span>    <span class="k2">{</span><span class="n">0</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>,
<span class="number">  48</span>    <span class="k2">{</span><span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>,
<span class="number">  49</span>    <span class="k2">{</span><span class="n">0</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>,
<span class="number">  50</span>    <span class="k2">{</span><span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>,
<span class="number">  51</span>    <span class="k2">{</span><span class="n">1</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>
<span class="number">  52</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  53</span>
<span class="number">  54</span><a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a> cc<span class="k2">[</span><span class="n">8</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>
<span class="number">  55</span>    <span class="k2">{</span><span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>,
<span class="number">  56</span>    <span class="k2">{</span><span class="n">1</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>,
<span class="number">  57</span>    <span class="k2">{</span><span class="n">0</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>,
<span class="number">  58</span>    <span class="k2">{</span><span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>,
<span class="number">  59</span>    <span class="k2">{</span><span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>,
<span class="number">  60</span>    <span class="k2">{</span><span class="n">0</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>,
<span class="number">  61</span>    <span class="k2">{</span><span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>,
<span class="number">  62</span>    <span class="k2">{</span><span class="n">1</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span>,<span class="n">1</span>.<span class="n">0f</span><span class="k2">}</span>
<span class="number">  63</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  64</span>
<span class="number">  65</span><span class="k1">struct</span> TEX2D <span class="k2">{</span>
<span class="number">  66</span>    <span class="k1">float</span> u,v<span class="k2">;</span>
<span class="number">  67</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  68</span>
<span class="number">  69</span>TEX2D tex2d<span class="k2">[</span><span class="n">4</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>
<span class="number">  70</span>    <span class="k2">{</span><span class="n">0</span>.<span class="n">0</span>,<span class="n">1</span>.<span class="n">0</span><span class="k2">}</span>,
<span class="number">  71</span>    <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="number">  72</span>    <span class="k2">{</span><span class="n">1</span>.<span class="n">0</span>,<span class="n">0</span>.<span class="n">0</span><span class="k2">}</span>,
<span class="number">  73</span>    <span class="k2">{</span><span class="n">1</span>.<span class="n">0</span>,<span class="n">1</span>.<span class="n">0</span><span class="k2">}</span>
<span class="number">  74</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  75</span>
<span class="number">  76</span><span class="k1">struct</span> TRI <span class="k2">{</span>
<span class="number">  77</span>   XYZ<span class="k3">*</span> p1<span class="k2">;</span>
<span class="number">  78</span>   XYZ<span class="k3">*</span> p2<span class="k2">;</span>
<span class="number">  79</span>   XYZ<span class="k3">*</span> p3<span class="k2">;</span>
<span class="number">  80</span>   <a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a><span class="k3">*</span> c1<span class="k2">;</span>
<span class="number">  81</span>   <a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a><span class="k3">*</span> c2<span class="k2">;</span>
<span class="number">  82</span>   <a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a><span class="k3">*</span> c3<span class="k2">;</span>
<span class="number">  83</span>   TEX2D<span class="k3">*</span> tuv1<span class="k2">;</span>
<span class="number">  84</span>   TEX2D<span class="k3">*</span> tuv2<span class="k2">;</span>
<span class="number">  85</span>   TEX2D<span class="k3">*</span> tuv3<span class="k2">;</span>
<span class="number">  86</span>   
<span class="number">  87</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  88</span>
<span class="number">  89</span>TRI cube_faces<span class="k2">[</span><span class="n">12</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>
<span class="number">  90</span>    <span class="k2">{</span><span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>, <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">}</span>,
<span class="number">  91</span>    <span class="k2">{</span><span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">}</span>,
<span class="number">  92</span>    <span class="k2">{</span><span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>, <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">5</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">}</span>,
<span class="number">  93</span>    <span class="k2">{</span><span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">5</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">4</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">3</span><span class="k2">]</span>, <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">5</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">4</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">}</span>,
<span class="number">  94</span>    <span class="k2">{</span><span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">4</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">5</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">6</span><span class="k2">]</span>, <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">4</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">5</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">6</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">}</span>,
<span class="number">  95</span>    <span class="k2">{</span><span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">6</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">7</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">4</span><span class="k2">]</span>, <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">6</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">7</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">4</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">}</span>,
<span class="number">  96</span>    <span class="k2">{</span><span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">7</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">6</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>, <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">7</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">6</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">}</span>,
<span class="number">  97</span>    <span class="k2">{</span><span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">7</span><span class="k2">]</span>, <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">7</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">}</span>,
<span class="number">  98</span>    <span class="k2">{</span><span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">4</span><span class="k2">]</span>, <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">4</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">}</span>,
<span class="number">  99</span>    <span class="k2">{</span><span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">4</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">7</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">4</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">7</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">}</span>,
<span class="number"> 100</span>    <span class="k2">{</span><span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">6</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">5</span><span class="k2">]</span>, <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">6</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">5</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k2">}</span>,
<span class="number"> 101</span>    <span class="k2">{</span><span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">5</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="k3">&amp;</span>uc<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>, <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">5</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="k3">&amp;</span>cc<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">2</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> , <span class="k3">&amp;</span>tex2d<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">}</span>
<span class="number"> 102</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 103</span>
<span class="number"> 104</span>
<span class="number"> 105</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"> 106</span>    
<span class="number"> 107</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"> 108</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"> 109</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</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="k2">{</span><span class="k1">return</span> <span class="n">3</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 110</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init_ttf_addon"><span class="a">al_init_ttf_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> <span class="n">4</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 111</span>    
<span class="number"> 112</span>    
<span class="number"> 113</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">5</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 114</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_mouse"><span class="a">al_install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> <span class="n">6</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 115</span>    
<span class="number"> 116</span><span class="c">///    al_set_new_display_option(ALLEGRO_FLOAT_DEPTH , ALLEGRO_REQUIRE , 1);</span>
<span class="number"> 117</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_DEPTH_SIZE , ALLEGRO_SUGGEST , <span class="n">32</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 118</span>    
<span class="number"> 119</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="k3">|</span> ALLEGRO_OPENGL <span class="k3">|</span> ALLEGRO_WINDOWED<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 120</span>    
<span class="number"> 121</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> <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"> 122</span>    
<span class="number"> 123</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"> 124</span>    
<span class="number"> 125</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"> 126</span>    
<span class="number"> 127</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>t<span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> <span class="k3">-</span><span class="n">2</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 128</span>    
<span class="number"> 129</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"> 130</span>    
<span class="number"> 131</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>q<span class="k2">)</span> <span class="k2">{</span><span class="k1">return</span> <span class="k3">-</span><span class="n">3</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 132</span>    
<span class="number"> 133</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"> 134</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"> 135</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"> 136</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_mouse_event_source"><span class="a">al_get_mouse_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 137</span>    
<span class="number"> 138</span>    <span class="k1">int</span> tw <span class="k3">=</span> <span class="n">256</span><span class="k2">;</span>
<span class="number"> 139</span>
<span class="number"> 140</span>    <span class="c">/// Consola_ttf comes from our Consola.h header, it is the data for the Consola.ttf file</span>
<span class="number"> 141</span>    
<span class="number"> 142</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FILE"><span class="a">ALLEGRO_FILE</span></a><span class="k3">*</span> file <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_open_memfile"><span class="a">al_open_memfile</span></a><span class="k2">(</span>Consola_ttf , <span class="k1">sizeof</span><span class="k2">(</span>Consola_ttf<span class="k2">)</span><span class="k3">/</span><span class="k1">sizeof</span><span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">char</span><span class="k2">)</span> , <span class="s">"r"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 143</span>
<span class="number"> 144</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>file<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 145</span>        <span class="k1">return</span> <span class="k3">-</span><span class="n">5</span><span class="k2">;</span>
<span class="number"> 146</span>    <span class="k2">}</span>
<span class="number"> 147</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a><span class="k3">*</span> f <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_ttf_font_f"><span class="a">al_load_ttf_font_f</span></a><span class="k2">(</span>file , <span class="s">"Consola.ttf"</span> , <span class="n">3</span><span class="k3">*</span>tw<span class="k3">/</span><span class="n">8</span> , <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 148</span>    
<span class="number"> 149</span>    <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>f<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 150</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Failed to load ttf font from memfile.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 151</span>        <span class="k1">return</span> <span class="k3">-</span><span class="n">6</span><span class="k2">;</span>
<span class="number"> 152</span>    <span class="k2">}</span>
<span class="number"> 153</span>    
<span class="number"> 154</span>    
<span class="number"> 155</span>    <span class="c">/// Create a 2x2 black and white checker texture with text on it</span>
<span class="number"> 156</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> atex <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>tw,tw<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 157</span>    
<span class="number"> 158</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>atex<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 159</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"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">255</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"> 160</span>    
<span class="number"> 161</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>,tw<span class="k3">/</span><span class="n">2</span>,tw<span class="k3">/</span><span class="n">2</span> , <a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</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>tw<span class="k3">/</span><span class="n">2</span>,tw<span class="k3">/</span><span class="n">2</span>,tw,tw,<a href="http://www.allegro.cc/manual/al_map_rgba"><span class="a">al_map_rgba</span></a><span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 163</span>
<span class="number"> 164</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>f , <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> , tw<span class="k3">/</span><span class="n">4</span> , tw<span class="k3">/</span><span class="n">4</span> <span class="k3">-</span> <a href="http://www.allegro.cc/manual/al_get_font_line_height"><span class="a">al_get_font_line_height</span></a><span class="k2">(</span>f<span class="k2">)</span><span class="k3">/</span><span class="n">2</span> , ALLEGRO_ALIGN_CENTER , <span class="s">"A"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 165</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>f , <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="k3">*</span>tw<span class="k3">/</span><span class="n">4</span> , tw<span class="k3">/</span><span class="n">4</span> <span class="k3">-</span> <a href="http://www.allegro.cc/manual/al_get_font_line_height"><span class="a">al_get_font_line_height</span></a><span class="k2">(</span>f<span class="k2">)</span><span class="k3">/</span><span class="n">2</span> , ALLEGRO_ALIGN_CENTER , <span class="s">"B"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 166</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>f , <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> , tw<span class="k3">/</span><span class="n">4</span> , <span class="n">3</span><span class="k3">*</span>tw<span class="k3">/</span><span class="n">4</span> <span class="k3">-</span> <a href="http://www.allegro.cc/manual/al_get_font_line_height"><span class="a">al_get_font_line_height</span></a><span class="k2">(</span>f<span class="k2">)</span><span class="k3">/</span><span class="n">2</span> , ALLEGRO_ALIGN_CENTER , <span class="s">"C"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 167</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>f , <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">3</span><span class="k3">*</span>tw<span class="k3">/</span><span class="n">4</span> , <span class="n">3</span><span class="k3">*</span>tw<span class="k3">/</span><span class="n">4</span> <span class="k3">-</span> <a href="http://www.allegro.cc/manual/al_get_font_line_height"><span class="a">al_get_font_line_height</span></a><span class="k2">(</span>f<span class="k2">)</span><span class="k3">/</span><span class="n">2</span> , ALLEGRO_ALIGN_CENTER , <span class="s">"D"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 168</span>    
<span class="number"> 169</span>    <span class="k1">float</span> rotx <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 170</span>    <span class="k1">float</span> roty <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 171</span>    <span class="k1">float</span> rotz <span class="k3">=</span> <span class="n">180</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 172</span>
<span class="number"> 173</span>    <span class="k1">float</span> rotv <span class="k3">=</span> <span class="n">0</span>.<span class="n">5</span><span class="k2">;</span>
<span class="number"> 174</span>    <span class="k1">float</span> rotxv <span class="k3">=</span> <span class="n">4</span><span class="k3">*</span>rotv<span class="k2">;</span>
<span class="number"> 175</span>    <span class="k1">float</span> rotyv <span class="k3">=</span> <span class="n">2</span><span class="k3">*</span>rotv<span class="k2">;</span>
<span class="number"> 176</span>    <span class="k1">float</span> rotzv <span class="k3">=</span> rotv<span class="k2">;</span>
<span class="number"> 177</span>    <span class="k1">float</span> rotlimit <span class="k3">=</span> <span class="n">360</span><span class="k2">;</span>
<span class="number"> 178</span>    
<span class="number"> 179</span>    <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 180</span>    <span class="k1">bool</span> quit <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 181</span>    
<span class="number"> 182</span>    <span class="k1">int</span> shrink <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 183</span>    <span class="k1">int</span> shrink_dir <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 184</span>    
<span class="number"> 185</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"> 186</span>    
<span class="number"> 187</span>    glEnable<span class="k2">(</span>GL_TEXTURE_2D<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 188</span>    glEnable<span class="k2">(</span>GL_DEPTH_TEST<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 189</span>    glEnable<span class="k2">(</span>GL_CULL_FACE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 190</span>    glDisable<span class="k2">(</span>GL_LIGHTING<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 191</span>    glFrontFace<span class="k2">(</span>GL_CCW<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 192</span>    glCullFace<span class="k2">(</span>GL_NONE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 193</span>    
<span class="number"> 194</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"> 195</span>        <span class="k1">if</span> <span class="k2">(</span>redraw<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 196</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"> 197</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">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"> 198</span>        
<span class="number"> 199</span>            glClear<span class="k2">(</span>GL_DEPTH_BUFFER_BIT<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 200</span>        
<span class="number"> 201</span>            resetOpenGLmatrices<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 202</span>            
<span class="number"> 203</span>            <span class="k1">float</span> scale <span class="k3">=</span> <span class="n">1</span>.<span class="n">0</span> <span class="k3">-</span> <span class="k2">(</span>shrink<span class="k3">/</span><span class="k2">(</span>ww<span class="k3">/</span><span class="n">2</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 204</span><span class="c">///            glScalef(2.0*scale , 2*scale , 2*scale);</span>
<span class="number"> 205</span>            scale <span class="k3">=</span> <span class="n">1</span>.<span class="n">5</span><span class="k2">;</span>
<span class="number"> 206</span>            glScalef<span class="k2">(</span>scale , scale , scale<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 207</span>            glRotatef<span class="k2">(</span>rotz , <span class="n">0</span> , <span class="n">0</span> , <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 208</span>            glRotatef<span class="k2">(</span>rotx , <span class="n">1</span> , <span class="n">0</span> , <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 209</span>            glRotatef<span class="k2">(</span>roty , <span class="n">0</span> , <span class="n">1</span> , <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 210</span>            
<span class="number"> 211</span>            GLuint texid <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_opengl_texture"><span class="a">al_get_opengl_texture</span></a><span class="k2">(</span>atex<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 212</span>            glBindTexture<span class="k2">(</span>GL_TEXTURE_2D , texid<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 213</span>
<span class="number"> 214</span><span class="c">//*</span>
<span class="number"> 215</span>            <span class="c">/// Draw outside of cube</span>
<span class="number"> 216</span>            glFrontFace<span class="k2">(</span>GL_CCW<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 217</span>            glCullFace<span class="k2">(</span>GL_BACK<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 218</span>            glBegin<span class="k2">(</span>GL_TRIANGLES<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 219</span>            <span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 220</span>            <span class="k1">while</span> <span class="k2">(</span>i <span class="k3">&lt;</span> <span class="n">12</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 221</span>                <span class="k1">float</span> r,g,b<span class="k2">;</span>
<span class="number"> 222</span>                <a href="http://www.allegro.cc/manual/al_color_hsl_to_rgb"><span class="a">al_color_hsl_to_rgb</span></a><span class="k2">(</span><span class="k2">(</span>i<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k3">*</span><span class="n">60</span>.<span class="n">0f</span> , <span class="n">1</span>.<span class="n">0</span> , <span class="n">0</span>.<span class="n">5</span> , <span class="k3">&amp;</span>r , <span class="k3">&amp;</span>g , <span class="k3">&amp;</span>b<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 223</span>                
<span class="number"> 224</span>                <a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a> hue <span class="k3">=</span> <span class="k2">{</span>r,g,b<span class="k2">}</span><span class="k2">;</span>
<span class="number"> 225</span>                
<span class="number"> 226</span>                TRI<span class="k3">*</span> face <span class="k3">=</span> <span class="k3">&amp;</span>cube_faces<span class="k2">[</span>i<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 227</span>                XYZ<span class="k3">*</span> f<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>face-&gt;p1 , face-&gt;p2 , face-&gt;p3<span class="k2">}</span><span class="k2">;</span>
<span class="number"> 228</span><span class="c">///                XYZ* f2[3] = {face-&gt;p3 , face-&gt;p2 , face-&gt;p1};</span>
<span class="number"> 229</span><span class="c">///                RGB* col[3] = {face-&gt;c1 , face-&gt;c2 , face-&gt;c3};</span>
<span class="number"> 230</span>                TEX2D<span class="k3">*</span> txy<span class="k2">[</span><span class="n">3</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>face-&gt;tuv1 , face-&gt;tuv2 , face-&gt;tuv3<span class="k2">}</span><span class="k2">;</span>
<span class="number"> 231</span>
<span class="number"> 232</span>                <span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 233</span>                <span class="k1">while</span> <span class="k2">(</span>j <span class="k3">&lt;</span> <span class="n">3</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 234</span>                    XYZ<span class="k3">*</span> p <span class="k3">=</span> f<span class="k2">[</span>j<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 235</span><span class="c">///                    RGB* c = col[j];</span>
<span class="number"> 236</span>                    <a href="http://www.allegro.cc/manual/RGB"><span class="a">RGB</span></a><span class="k3">*</span> c <span class="k3">=</span> <span class="k3">&amp;</span>hue<span class="k2">;</span>
<span class="number"> 237</span>                    TEX2D<span class="k3">*</span> t <span class="k3">=</span> txy<span class="k2">[</span>j<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 238</span>                    glColor4f<span class="k2">(</span>c-&gt;r,c-&gt;g,c-&gt;b,<span class="n">1</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 239</span>                    glTexCoord2f<span class="k2">(</span>t-&gt;u , t-&gt;v<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 240</span>                    glVertex3f<span class="k2">(</span>p-&gt;x , p-&gt;y , p-&gt;z<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 241</span>                    <span class="k3">+</span><span class="k3">+</span>j<span class="k2">;</span>
<span class="number"> 242</span>                <span class="k2">}</span>
<span class="number"> 243</span>                <span class="k3">+</span><span class="k3">+</span>i<span class="k2">;</span>
<span class="number"> 244</span>            <span class="k2">}</span>
<span class="number"> 245</span>            glEnd<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 246</span>
<span class="number"> 247</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"> 248</span>            
<span class="number"> 249</span>            redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 250</span>        <span class="k2">}</span>
<span class="number"> 251</span>        <span class="k1">do</span> <span class="k2">{</span>
<span class="number"> 252</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"> 253</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"> 254</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"> 255</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"> 256</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"> 257</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"> 258</span>            <span class="k2">}</span>
<span class="number"> 259</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>quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 260</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>quit <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 261</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"> 262</span>                redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 263</span>
<span class="number"> 264</span>                shrink <span class="k3">+</span><span class="k3">=</span> shrink_dir<span class="k2">;</span>
<span class="number"> 265</span>                <span class="k1">if</span> <span class="k2">(</span>shrink <span class="k3">&gt;</span> ww<span class="k3">/</span><span class="n">2</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 266</span>                    shrink <span class="k3">=</span> ww<span class="k3">/</span><span class="n">2</span><span class="k2">;</span>
<span class="number"> 267</span>                    shrink_dir <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 268</span>                <span class="k2">}</span>
<span class="number"> 269</span>                <span class="k1">if</span> <span class="k2">(</span>shrink <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 270</span>                    shrink <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 271</span>                    shrink_dir <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 272</span>                <span class="k2">}</span>
<span class="number"> 273</span>                <span class="c">/*</span>
<span class="number"> 274</span><span class="c">                rotx += rotxv;</span>
<span class="number"> 275</span><span class="c">                rotx = fmod(rotx , rotlimit);</span>
<span class="number"> 276</span><span class="c">                roty += rotyv;</span>
<span class="number"> 277</span><span class="c">                roty = fmod(roty , rotlimit);</span>
<span class="number"> 278</span><span class="c">                rotz += rotzv;</span>
<span class="number"> 279</span><span class="c">                rotz = fmod(rotz , rotlimit);</span>
<span class="number"> 280</span><span class="c">                */</span>
<span class="number"> 281</span>            <span class="k2">}</span>
<span class="number"> 282</span><span class="c">//*</span>
<span class="number"> 283</span>            <span class="k1">if</span> <span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_MOUSE_AXES<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 284</span>                roty <span class="k3">=</span> <span class="n">360</span>.<span class="n">0f</span><span class="k3">*</span><span class="k2">(</span><span class="k2">(</span>ww<span class="k3">/</span><span class="n">2</span><span class="k2">)</span> <span class="k3">-</span> ev.mouse.x<span class="k2">)</span><span class="k3">/</span><span class="k2">(</span>ww<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 285</span>                rotx <span class="k3">=</span> <span class="n">360</span>.<span class="n">0f</span><span class="k3">*</span><span class="k2">(</span><span class="k2">(</span>wh<span class="k3">/</span><span class="n">2</span><span class="k2">)</span> <span class="k3">-</span> ev.mouse.y<span class="k2">)</span><span class="k3">/</span><span class="k2">(</span>wh<span class="k3">/</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 286</span>                rotz <span class="k3">+</span><span class="k3">=</span> <span class="n">30</span>.<span class="n">0f</span><span class="k3">*</span>ev.mouse.dz<span class="k2">;</span>
<span class="number"> 287</span>                rotz <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_332.html" target="_blank">fmod</a><span class="k2">(</span>rotz , rotlimit<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 288</span>                redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 289</span>            <span class="k2">}</span>
<span class="number"> 290</span><span class="c">//*/</span>
<span class="number"> 291</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"> 292</span>        
<span class="number"> 293</span>    <span class="k2">}</span>
<span class="number"> 294</span>    
<span class="number"> 295</span>    
<span class="number"> 296</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 297</span><span class="k2">}</span>
<span class="number"> 298</span>
<span class="number"> 299</span>
<span class="number"> 300</span><span class="k1">void</span> resetOpenGLmatrices<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 301</span>    <span class="c">/// Set the projection matrix</span>
<span class="number"> 302</span>    glMatrixMode<span class="k2">(</span>GL_PROJECTION<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 303</span>    glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="c">/// Reset</span>
<span class="number"> 304</span>
<span class="number"> 305</span><span class="c">///    glOrtho(0 , ww , 0 , wh , -1 , 1);/// Use this for 2D projections the size of the screen (ww,wh)</span>
<span class="number"> 306</span>
<span class="number"> 307</span>    gluPerspective<span class="k2">(</span><span class="n">90</span> , ww<span class="k3">/</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span>wh , <span class="n">0</span>.<span class="n">5</span> , <span class="n">5</span><span class="k2">)</span><span class="k2">;</span><span class="c">/// gluPerspective values for Z should ALWAYS be postive and non-zero</span>
<span class="number"> 308</span>
<span class="number"> 309</span>
<span class="number"> 310</span>    <span class="c">/// Set the model view matrix</span>
<span class="number"> 311</span>    glMatrixMode<span class="k2">(</span>GL_MODELVIEW<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 312</span>    glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="c">/// Reset</span>
<span class="number"> 313</span>    gluLookAt<span class="k2">(</span><span class="n">0</span> , <span class="n">0</span> , <span class="k3">-</span><span class="n">2</span> , <span class="n">0</span> , <span class="n">0</span> , <span class="n">0</span> , <span class="n">0</span> , <span class="n">1</span> , <span class="n">0</span><span class="k2">)</span><span class="k2">;</span><span class="c">/// setup our camera matrix at z = -2 looking at the origin, with a regular up vector</span>
<span class="number"> 314</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 03 Jan 2018 18:29:32 +0000</pubDate>
	</item>
</rss>
