<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Rendering A Hot Air Balloon</title>
		<link>http://www.allegro.cc/forums/view/618167</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 05 Jul 2020 05:49:51 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi all:</p><p>  I had an idea the other day: make a hot air balloon</p><p>using allegro and opengl. Do you think this would be</p><p>a project a newbie could accomplish? If so, where would</p><p>one begin? I have had to give up on many things because</p><p>it got too difficult for me! This would be great if it</p><p>could be done!</p><p>Thanks for your time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Scooter)</author>
		<pubDate>Mon, 29 Jun 2020 19:51:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Set the bar low to start. A hot air balloon could be as simple as a circle with a square beneath it, or a sphere and a cube if 3D.</p><p>Note: Allegro doesn&#39;t really help you drawing 3D things. You need to do that with GL directly. Allegro will just initialize things for you I think.</p><p>After you&#39;ve got a very simple program working you can expand upon it to make it better, piece by piece. If you aim too high you won&#39;t get anything done.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Mon, 29 Jun 2020 20:30:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi bamccaig:</p><p>  Great idea! If I start with a sphere, bring the bottom of the</p><p>sphere down, narrow it a bit I would have the shape I need.</p><p>Is there a way to do such a thing in opengl? Just a thought.</p><p>Thanks
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Scooter)</author>
		<pubDate>Mon, 29 Jun 2020 21:46:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m afraid OpenGL is far too complicated to learn it from questions and answers on a messaging board. If you don&#39;t know it yet you&#39;re going to have to learn it first. Put the hot air balloon idea on a shelf, and start by completing an OpenGL tutorial or two. Once you&#39;ve got a simple program running you can try Googling for things that you think you&#39;ll need for the hot air balloon, and try to figure out how to do it. If you have trouble getting something to work you can post here, but don&#39;t expect us to do your homework for you. That&#39;s not how the Internet works. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /> I can&#39;t help anyway because I myself haven&#39;t gone past the tutorial step.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Mon, 29 Jun 2020 22:17:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi bamccaig:</p><p>  Sorry, didn&#39;t mean to upset you!</p><p>  Have a great day!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Scooter)</author>
		<pubDate>Mon, 29 Jun 2020 22:25:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m not upset. I&#39;m just trying to steer you in the right direction. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (bamccaig)</author>
		<pubDate>Mon, 29 Jun 2020 22:27:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Step 1) Decide the technical requirements of what you want to do.<br />Step 2) Decide what is the best way to accomplish that<br />Step 3) Implement a very basic version to start<br />Step 4) Improve<br />Step 5) Repeat step 4<br />Step 6) Decide if you&#39;re satisfied with where you&#39;re at.<br />Step 6a) Go back to 1<br />Step 7) $PROFIT$</p><p>For instance, here&#39;s a hot air balloon I drew by accident. Allegro is more than capable of drawing a balloon as a polygon, a set of lines, etc... You don&#39;t specifically need to know OpenGL to do it.</p><p><a href="http://members.allegro.cc/EdgarReynaldo/previews/Spiraloid/Balloon1.html">http://members.allegro.cc/EdgarReynaldo/previews/Spiraloid/Balloon1.html</a></p><p><span class="remote-thumbnail"><span class="json">{"name":"Balloon1.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/c\/dca6d415a73ea6eb425fd585553435af.png","w":1024,"h":768,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/d\/c\/dca6d415a73ea6eb425fd585553435af"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/d/c/dca6d415a73ea6eb425fd585553435af-240.jpg" alt="Balloon1.png" width="240" height="180" /></span></p><p><b>EDIT</b><br />Technically you can think of a balloon as a series of discs layered together.</p><p>Once you have that, you can try to texture it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Mon, 29 Jun 2020 23:59:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi Edgar:</p><p>  Thanks for the reply. It has been awhile, hope all is well!</p><p>I have downloaded 2 files: balloon.jpg and section.png. The</p><p>balloon file will show you what I am trying to duplicate. There</p><p>are 10 sections to the balloon. The section file shows one</p><p>of the 10 sections without the birds. My problem is the section</p><p>has to be fitted to the balloon shape. That is my problem. What</p><p>is the best way to do this? If you have any questions let me know.</p><p>Thanks!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Scooter)</author>
		<pubDate>Tue, 30 Jun 2020 01:08:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Are you planning on a 2D balloon or a 3D one?</p><p>You need the vertices, and the texture coordinates.</p><p>From something like an .obj or some kind of model file.</p><p>Then you can draw with allegro or opengl.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 30 Jun 2020 01:39:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi Edgar:</p><p>  Oh, it must be 3D in opengl! As far as the .obj file: do I need to</p><p>do the balloon in Blender and then import to opengl? I hope not!</p><p>Thanks!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Scooter)</author>
		<pubDate>Tue, 30 Jun 2020 01:50:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Make the strips horizontal. Vertical will only give you pain. Break them up into a band. Take a disc and make a bracelet. The outside of the bracelet is the band which you render in opengl. You still don&#39;t need OpenGL to do this, as allegro can do it for you.</p><p><a href="http://docs.liballeg.org/primitives.html#al_draw_prim">al_draw_prim</a></p><p><b>hint</b><br />It can be done by hand with a little radial trigonometry in 3D.</p><p>Align it down the axis, and every band is just a circle of different radius connected to to the previous and next strip.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 30 Jun 2020 03:25:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ve been playing with the problem of creating a hot air balloon in code and.. well.. maybe it helps:<br />(done using gluCylinder and gluSphere)</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">   1</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">   2</span><span class="p">#include &lt;math.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   4</span><span class="p">#include "allegro5/allegro_primitives.h"</span>
<span class="number">   5</span><span class="p">#include &lt;allegro5/allegro_opengl.h&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;GL/glu.h&gt;</span>
<span class="number">   7</span>
<span class="number">   8</span>
<span class="number">   9</span><span class="k1">const</span> <span class="k1">float</span> FPS <span class="k3">=</span> <span class="n">60</span><span class="k2">;</span>
<span class="number">  10</span>
<span class="number">  11</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  12</span><a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>event_queue <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  13</span><a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer1 <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  14</span>
<span class="number">  15</span><span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  16</span>
<span class="number">  17</span><span class="k1">double</span> lightangle <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  18</span>GLUquadricObj <span class="k3">*</span>quadric <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  19</span>
<span class="number">  20</span><span class="c">// isolating cleanup code in a single function because we use this code many times</span>
<span class="number">  21</span><span class="c">// doing this will keep the rest of the source code easier to read</span>
<span class="number">  22</span><span class="k1">void</span> close_and_exit<span class="k2">(</span><span class="k2">)</span>
<span class="number">  23</span><span class="k2">{</span>
<span class="number">  24</span>   <span class="k1">if</span> <span class="k2">(</span>quadric<span class="k2">)</span> gluDeleteQuadric<span class="k2">(</span>quadric<span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span>   <span class="k1">if</span> <span class="k2">(</span>timer1<span class="k2">)</span> <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>timer1<span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span>   <span class="k1">if</span> <span class="k2">(</span>display<span class="k2">)</span> <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span>   <span class="k1">if</span> <span class="k2">(</span>event_queue<span class="k2">)</span> <a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span>   <a href="http://www.allegro.cc/manual/al_uninstall_system"><span class="a">al_uninstall_system</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span>   <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  30</span><span class="k2">}</span>
<span class="number">  31</span>
<span class="number">  32</span><span class="c">// the program execution starts here with 'main' function</span>
<span class="number">  33</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">  34</span>
<span class="number">  35</span>   <span class="c">// here we initialize different parts of Allegro</span>
<span class="number">  36</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/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="number">  37</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"failed to initialize allegro!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  38</span>      <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  39</span>   <span class="k2">}</span>
<span class="number">  40</span>
<span class="number">  41</span>   <a href="http://www.allegro.cc/manual/al_init_primitives_addon"><span class="a">al_init_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>   <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_DONTCARE  , <span class="n">16</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>   <a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a><span class="k2">(</span>ALLEGRO_OPENGL <span class="k2">)</span><span class="k2">;</span>
<span class="number">  44</span>   display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><span class="n">640</span>, <span class="n">480</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  45</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  46</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"failed to create display!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  47</span>      close_and_exit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  48</span>   <span class="k2">}</span>
<span class="number">  49</span>
<span class="number">  50</span>   <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  51</span>       <span class="k2">{</span>
<span class="number">  52</span>       <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"Error installing keyboard.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  53</span>       close_and_exit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  54</span>       <span class="k2">}</span>
<span class="number">  55</span>
<span class="number">  56</span>   event_queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>event_queue<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  58</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"failed to create event_queue!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  59</span>      close_and_exit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  60</span>   <span class="k2">}</span>
<span class="number">  61</span>
<span class="number">  62</span>   timer1 <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> FPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>timer1<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  64</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_345.html" target="_blank">fprintf</a><span class="k2">(</span>stderr, <span class="s">"failed to create timer!\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>      close_and_exit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  66</span>   <span class="k2">}</span>
<span class="number">  67</span>
<span class="number">  68</span>   <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  69</span>
<span class="number">  70</span>   <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>
<span class="number">  72</span>   <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer1<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>
<span class="number">  74</span>   <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>timer1<span class="k2">)</span><span class="k2">;</span>
<span class="number">  75</span>
<span class="number">  76</span>glEnable<span class="k2">(</span>GL_DEPTH_TEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  77</span>glDisable<span class="k2">(</span>GL_CULL_FACE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  78</span>glEnable<span class="k2">(</span>GL_LIGHTING<span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>quadric <span class="k3">=</span> gluNewQuadric<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  80</span>   <span class="k1">while</span><span class="k2">(</span><span class="n">1</span><span class="k2">)</span>
<span class="number">  81</span>   <span class="k2">{</span>
<span class="number">  82</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">  83</span>      <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>ev<span class="k2">)</span><span class="k2">;</span>
<span class="number">  84</span>
<span class="number">  85</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">  86</span>         redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  87</span>      <span class="k2">}</span>
<span class="number">  88</span>
<span class="number">  89</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="k2">)</span> <span class="k2">{</span>
<span class="number">  90</span>
<span class="number">  91</span>         <span class="k1">if</span> <span class="k2">(</span>ev.keyboard.keycode<span class="k3">=</span><span class="k3">=</span>ALLEGRO_KEY_ESCAPE<span class="k2">)</span>
<span class="number">  92</span>            close_and_exit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  93</span>      <span class="k2">}</span>
<span class="number">  94</span>
<span class="number">  95</span>
<span class="number">  96</span>      <span class="k1">if</span><span class="k2">(</span>ev.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  97</span>         <span class="k1">break</span><span class="k2">;</span>
<span class="number">  98</span>      <span class="k2">}</span>
<span class="number">  99</span>
<span class="number"> 100</span>      <span class="k1">if</span><span class="k2">(</span>redraw <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 101</span>       <span class="k2">{</span>
<span class="number"> 102</span>       redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 103</span>       <a href="http://www.allegro.cc/manual/al_set_target_backbuffer"><span class="a">al_set_target_backbuffer</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</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">50</span>,<span class="n">140</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 105</span>       glClear<span class="k2">(</span>GL_COLOR_BUFFER_BIT <span class="k3">|</span> GL_DEPTH_BUFFER_BIT<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 106</span>       glMatrixMode<span class="k2">(</span>GL_PROJECTION<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 107</span>       glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 108</span>       gluPerspective<span class="k2">(</span><span class="n">90</span>.<span class="n">0</span>, <span class="k2">(</span>GLdouble<span class="k2">)</span><span class="n">640</span>.<span class="n">0</span> <span class="k3">/</span> <span class="k2">(</span>GLdouble<span class="k2">)</span><span class="n">480</span>.<span class="n">0</span>, <span class="n">1</span>.<span class="n">0</span>, <span class="n">2000</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 109</span>
<span class="number"> 110</span>       glMatrixMode<span class="k2">(</span>GL_MODELVIEW<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 111</span>       glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</span>       gluLookAt<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="k3">-</span><span class="n">100</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="n">0</span>.<span class="n">0</span>, <span class="n">1</span>.<span class="n">0f</span>, <span class="n">0</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 113</span>
<span class="number"> 114</span>       GLfloat light0_pos<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="n">50</span>.<span class="n">0</span>, <span class="n">50</span>.<span class="n">0</span>, <span class="k3">-</span><span class="n">50</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"> 115</span>       GLfloat light0_color<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="n">0</span>.<span class="n">01</span>, <span class="n">0</span>.<span class="n">01</span>, <span class="n">0</span>.<span class="n">01</span>, <span class="n">0</span>.<span class="n">0</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 116</span>       GLfloat light1_pos<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="n">10</span>.<span class="n">0</span>, <span class="n">35</span>.<span class="n">0</span>, <span class="k3">-</span><span class="n">10</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"> 117</span>       GLfloat light1_color<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span><span class="n">1</span>.<span class="n">0</span>, <span class="n">0</span>.<span class="n">80</span>, <span class="n">0</span>.<span class="n">65</span>, <span class="n">0</span>.<span class="n">0</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 118</span>       light1_pos<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span>lightangle<span class="k3">/</span><span class="n">10</span>.<span class="n">0</span><span class="k2">)</span><span class="k3">*</span><span class="n">4000</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 119</span>       light1_pos<span class="k2">[</span><span class="n">2</span><span class="k2">]</span><span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span>lightangle<span class="k3">/</span><span class="n">10</span>.<span class="n">0</span><span class="k2">)</span><span class="k3">*</span><span class="n">4000</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 120</span>       lightangle<span class="k3">+</span><span class="k3">=</span><span class="n">0</span>.<span class="n">01</span><span class="k2">;</span>
<span class="number"> 121</span>       glLightfv<span class="k2">(</span> GL_LIGHT0,GL_POSITION,light0_pos<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 122</span>       glLightfv<span class="k2">(</span> GL_LIGHT0,GL_DIFFUSE,light1_color<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 123</span>       glLightfv<span class="k2">(</span> GL_LIGHT0,GL_AMBIENT,light0_color<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 124</span>       glLightfv<span class="k2">(</span> GL_LIGHT1,GL_POSITION,light1_pos<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 125</span>       glLightfv<span class="k2">(</span> GL_LIGHT1,GL_DIFFUSE,light1_color<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 126</span>       glLightfv<span class="k2">(</span> GL_LIGHT1,GL_AMBIENT,light1_color<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 127</span>       glEnable<span class="k2">(</span>GL_LIGHT0<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 128</span>       glEnable<span class="k2">(</span>GL_LIGHT1<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 129</span>
<span class="number"> 130</span>       glTranslatef<span class="k2">(</span><span class="n">0</span>,<span class="n">30</span><span class="k3">+</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span>lightangle<span class="k3">/</span><span class="n">10</span>.<span class="n">0</span><span class="k2">)</span><span class="k3">*</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span>lightangle<span class="k3">/</span><span class="n">5</span>.<span class="n">0</span><span class="k2">)</span><span class="k3">*</span><span class="n">20</span>.<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 131</span>       glRotatef<span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span>lightangle<span class="k2">)</span><span class="k3">*</span><span class="n">5</span>.<span class="n">0</span>,<span class="n">0</span>,<span class="n">2</span>.<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 132</span>       glRotatef<span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_113.html" target="_blank">cos</a><span class="k2">(</span>lightangle<span class="k3">*</span><span class="n">2</span>.<span class="n">0</span><span class="k2">)</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">2</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 133</span>       glColor3f<span class="k2">(</span><span class="n">1</span>,<span class="n">1</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 134</span>       gluQuadricTexture<span class="k2">(</span>quadric, GL_FALSE<span class="k2">)</span><span class="k2">;</span>         <span class="c">// halt  texture coordinate generation</span>
<span class="number"> 135</span>       gluQuadricDrawStyle<span class="k2">(</span>quadric, GLU_FILL <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 136</span>       gluQuadricDrawStyle<span class="k2">(</span>quadric, GLU_OUTSIDE <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 137</span>       gluQuadricNormals<span class="k2">(</span>quadric, GL_SMOOTH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 138</span>       gluSphere        <span class="k2">(</span>quadric, <span class="n">30</span>.<span class="n">0f</span>, <span class="n">18</span>, <span class="n">18</span><span class="k2">)</span><span class="k2">;</span>    <span class="c">// radius, slices, stacks</span>
<span class="number"> 139</span>       glRotatef<span class="k2">(</span><span class="n">90</span>,<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"> 140</span>       glColor3f<span class="k2">(</span><span class="n">1</span>,<span class="n">1</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 141</span>       gluQuadricDrawStyle<span class="k2">(</span>quadric, GLU_LINE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 142</span>       gluCylinder<span class="k2">(</span>quadric,<span class="n">30</span>,<span class="n">10</span>,<span class="n">50</span>,<span class="n">12</span>,<span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 143</span>       glTranslatef<span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">50</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 144</span>       gluQuadricDrawStyle<span class="k2">(</span>quadric, GLU_FILL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 145</span>       gluCylinder<span class="k2">(</span>quadric,<span class="n">10</span>,<span class="n">8</span>,<span class="n">10</span>,<span class="n">12</span>,<span class="n">12</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 146</span>
<span class="number"> 147</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"> 148</span>      <span class="k2">}</span>
<span class="number"> 149</span>   <span class="k2">}</span>
<span class="number"> 150</span>    close_and_exit<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 151</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (MikiZX)</author>
		<pubDate>Sat, 04 Jul 2020 01:46:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>NSND! Let&#39;s see it!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 04 Jul 2020 02:30:43 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Oh.. ok.. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /><br /><span class="remote-thumbnail"><span class="json">{"name":"612522","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/7\/3\/7383936d0090dfd1c00ea7c2d50fce70.png","w":606,"h":463,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/7\/3\/7383936d0090dfd1c00ea7c2d50fce70"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/7/3/7383936d0090dfd1c00ea7c2d50fce70-240.jpg" alt="612522" width="240" height="183" /></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (MikiZX)</author>
		<pubDate>Sat, 04 Jul 2020 05:20:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>dang, that&#39;s pretty good. Now just smooth out the sides, and you&#39;re golden.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 04 Jul 2020 07:25:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>@MikiZX: Out of curiousity, is there any reason you didn&#39;t use the Allegro 3D transform functions and primitive rendering?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (pmprog)</author>
		<pubDate>Sat, 04 Jul 2020 15:42:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hm.. honestly said I was &#39;thinking in OpenGL&#39; at the time and did not even think of Allegro5&#39;s transforms - I was just happy it worked.<br />Also, initialization of OpenGl and the part that sets the projection matrix come from posts posted on this forum few years ago by Edgar.<br />Though I am likely wrong, now that I think about it I think Allegro5 transforms are 2d oriented (Edgar is likely to correct or confirm this)? I think with Allegro5 transforms you always get a 2d/Ortho projection... ?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (MikiZX)</author>
		<pubDate>Sat, 04 Jul 2020 19:15:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>There are 2D and 3D transformations. The 2D transformations use 3D under the hood.</p><p>The projection matrix is whatever you set it to. It&#39;s all 3D under the hood. Ortho just gives you a flat space in a certain plane to work with.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 05 Jul 2020 05:49:51 +0000</pubDate>
	</item>
</rss>
