<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Generate UV texture coordinates?</title>
		<link>http://www.allegro.cc/forums/view/614683</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 08 Oct 2014 18:57:25 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m wondering how to generate tex coords easily if all I have is a list of vertices. I&#39;ve found some stuff on the web (ex: <a href="http://paulyg.f2s.com/uv.htm">http://paulyg.f2s.com/uv.htm</a>) but I can&#39;t seem to get it to work with my simple cube example.</p><p>Basically I have an array of floats, 3 per verticy * 36 to make up a cube. Applying the math on the above page leads to two faces being correct, but at least two being incorrect (end up being stripes).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 30 Sep 2014 07:35:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You can <a href="http://www.youtube.com/watch?v=obB9T3jXlak">unwrap the vertices with Blender</a> and export to Wavefront OBJ.  Or you just want a list of vertices for a cube here?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Tue, 30 Sep 2014 07:53:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have the vertices, I would like to calculate the texture coordinates.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 30 Sep 2014 08:03:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The texture coordinates are vertices, too. (albeit they&#39;re in 2D) <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><p>You want a mini example program for a cube to get the numbers or you want the general case?</p><p>I don&#39;t see what&#39;s wrong with that link you posted, maybe you should try putting different colors at each corner to check your assumptions about which corner is which.</p><p>[EDIT]</p><p>It just occurs to me that the 0.0 - 1.0 thing in the link you posted works for a separate image on each face, but the video would show stuff like 0.6 etc. to map one image across all faces.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Tue, 30 Sep 2014 08:08:13 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have no assumptions. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /> That code doesn&#39;t make assumptions either.</p><p>Here is the code I&#39;m using:</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">float</span> cube<span class="k2">[</span>NUM_VERTS <span class="k3">*</span> <span class="n">5</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>
<span class="number">  2</span>    <span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="c">// triangle 1 : begin</span>
<span class="number">  3</span>    <span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,
<span class="number">  4</span>    <span class="k3">-</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="c">// triangle 1 : end</span>
<span class="number">  5</span>    <span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="c">// triangle 2 : begin</span>
<span class="number">  6</span>    <span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number">  7</span>    <span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="c">// triangle 2 : end</span>
<span class="number">  8</span>    <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,
<span class="number">  9</span>    <span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 10</span>    <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 11</span>    <span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 12</span>    <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 13</span>    <span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 14</span>    <span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 15</span>    <span class="k3">-</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="number"> 16</span>    <span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 17</span>    <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 18</span>    <span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 19</span>    <span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 20</span>    <span class="k3">-</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="number"> 21</span>    <span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 22</span>    <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 23</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="number"> 24</span>    <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 25</span>    <span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 26</span>    <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 27</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="number"> 28</span>    <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 29</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="number"> 30</span>    <span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 31</span>    <span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 32</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="number"> 33</span>    <span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>,
<span class="number"> 34</span>    <span class="k3">-</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="number"> 35</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="number"> 36</span>    <span class="k3">-</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="number"> 37</span>    <span class="n">1</span>.<span class="n">0f</span>,<span class="k3">-</span><span class="n">1</span>.<span class="n">0f</span>, <span class="n">1</span>.<span class="n">0f</span>
<span class="number"> 38</span>  <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 39</span>  
<span class="number"> 40</span>  <span class="k1">float</span> lowest <span class="k3">=</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 41</span>  <span class="k1">float</span> highest <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 42</span>  <span class="k1">float</span> range <span class="k3">=</span> <span class="k2">(</span>lowest <span class="k3">-</span> highest<span class="k2">)</span> <span class="k3">*</span> <span class="k3">-</span><span class="n">1</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 43</span>  <span class="k1">float</span> offset <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span> <span class="k3">-</span> lowest<span class="k2">;</span>
<span class="number"> 44</span>  
<span class="number"> 45</span>  <span class="c">// for 1/-1</span>
<span class="number"> 46</span>  <span class="c">// range = (-1 - 1) * -1 == 2</span>
<span class="number"> 47</span>  <span class="c">// offset = 0 - -2 == 2</span>
<span class="number"> 48</span>  
<span class="number"> 49</span>  <span class="k1">float</span> <span class="k3">*</span>ptr <span class="k3">=</span> buff<span class="k2">;</span>
<span class="number"> 50</span>  <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> NUM_VERTS<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 51</span>  <span class="k2">{</span>
<span class="number"> 52</span>    <span class="k1">int</span> idx <span class="k3">=</span> i<span class="k3">*</span><span class="n">3</span><span class="k2">;</span>
<span class="number"> 53</span>    <span class="k3">*</span>ptr <span class="k3">=</span> cube<span class="k2">[</span>idx<span class="k2">]</span> <span class="k3">+</span> xoff<span class="k2">;</span> ptr<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 54</span>    <span class="k3">*</span>ptr <span class="k3">=</span> cube<span class="k2">[</span>idx<span class="k3">+</span><span class="n">1</span><span class="k2">]</span> <span class="k3">+</span> yoff<span class="k2">;</span> ptr<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 55</span>    <span class="k3">*</span>ptr <span class="k3">=</span> cube<span class="k2">[</span>idx<span class="k3">+</span><span class="n">2</span><span class="k2">]</span> <span class="k3">+</span> zoff<span class="k2">;</span> ptr<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 56</span>    
<span class="number"> 57</span>    <span class="k1">float</span> absx <span class="k3">=</span> <span class="k2">(</span>cube<span class="k2">[</span>idx<span class="k2">]</span> <span class="k3">+</span> offset<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>    <span class="k1">float</span> absy <span class="k3">=</span> <span class="k2">(</span>cube<span class="k2">[</span>idx<span class="k3">+</span><span class="n">1</span><span class="k2">]</span> <span class="k3">+</span> offset<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 59</span>    
<span class="number"> 60</span>    <span class="k3">*</span>ptr <span class="k3">=</span> <span class="k2">(</span>absx <span class="k3">/</span> range<span class="k2">)</span> <span class="k3">*</span> tx_fact <span class="k3">+</span> tx_x<span class="k2">;</span> ptr<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 61</span>    <span class="k3">*</span>ptr <span class="k3">=</span> <span class="k2">(</span>absy <span class="k3">/</span> range<span class="k2">)</span> <span class="k3">*</span> tx_fact <span class="k3">+</span> tx_y<span class="k2">;</span> ptr<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 62</span>    <span class="k3">*</span>ptr <span class="k3">=</span> tx_page<span class="k2">;</span> ptr<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 63</span>  <span class="k2">}</span>
</div></div><p>

The second last two items are the u/v cords. ignore tx_* variables. tx_fact is 1.0, tx_x, and tx_y are both 0.0. They will be used, but im still trying to get the basics to work...</p><p>Assuming I&#39;ve got the math right, it results in this: <br /><span class="remote-thumbnail"><span class="json">{"name":"608942","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/d\/1d266d38100cf683540896fa2e1de3d6.png","w":1030,"h":795,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/d\/1d266d38100cf683540896fa2e1de3d6"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/1/d/1d266d38100cf683540896fa2e1de3d6-240.jpg" alt="608942" width="240" height="185" /></span></p><p>Not quite correct <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" /></p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/614683/1005718#target">Arthur Kalliokoski</a> said:</div><div class="quote"><p>It just occurs to me that the 0.0 - 1.0 thing in the link you posted works for a separate image on each face, but the video would show stuff like 0.6 etc. to map one image across all faces.</p></div></div><p>The link is actually trying to map a single texture onto a mesh... So maybe it isn&#39;t the right thing to use here, but I was hoping it&#39;d work. I&#39;m currently just trying to use a single texture, with it being identical on all sides (not stretching over the cube, or doing a kind of wrapping of the image around the cube, later i might use cube maps or something, but not right now).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 30 Sep 2014 08:31:40 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I made <a href="https://www.allegro.cc/files/attachment/608944">a little program</a> to draw one image on each face of a cube, which wobbles around so you can see all sides.  Each face is tinted differently.</p><p>I compiled it with
</p><pre>
gcc -s -O2 -Wall t.c -o t -lallegro -lallegro_image -lGLU -lm
</pre><p>

<span class="remote-thumbnail"><span class="json">{"name":"608943","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/7\/17c89e4e445aa05757fa10ebd170bd77.png","w":802,"h":626,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/1\/7\/17c89e4e445aa05757fa10ebd170bd77"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/1/7/17c89e4e445aa05757fa10ebd170bd77-240.jpg" alt="608943" width="240" height="187" /></span></p><p>[EDIT]</p><p>Hey, now I know where I&#39;d seen your texture before!  You&#39;re trying to make a Minecraft clone, aren&#39;t you?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Tue, 30 Sep 2014 10:56:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/614683/1005723#target">Arthur Kalliokoski</a> said:</div><div class="quote"><p>Hey, now I know where I&#39;d seen your texture before! You&#39;re trying to make a Minecraft clone, aren&#39;t you?</p></div></div><p>I don&#39;t know if it&#39;ll get that far. So far its a little C++ Allegro5 MC Map Viewer. I had it actually loading and drawing a chunk, but textureless, which is rather anticlimactic.</p><p>Hm, your code doesn&#39;t actually calculate the uv coords though <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" /> If you used the same vertex values I could temporarily thief your uv coords, but I&#39;d like a way to generate the uv coords... Though for later things I may be using 3d models.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 30 Sep 2014 20:01:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/614683/1005733#target">Thomas Fjellstrom</a> said:</div><div class="quote"><p> Hm, your code doesn&#39;t actually calculate the uv coords though</p></div></div><p>If you look again, all the glTextureCoord2f() calls repeat exactly the same for each face.
</p><pre>
			glTexCoord2f(0.0,1.0);	//upper left

			glTexCoord2f(0.0,0.0);	//lower left

			glTexCoord2f(1.0,1.0);	//upper right

			glTexCoord2f(1.0,1.0);	//upper right again

			glTexCoord2f(0.0,0.0);	//lower left

			glTexCoord2f(1.0,0.0);	//lower right
</pre><p>

And if you used triangle strip you could eliminate the second &quot;upper right&quot; call.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Tue, 30 Sep 2014 20:08:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/614683/1005735#target">Arthur Kalliokoski</a> said:</div><div class="quote"><p>If you look again, all the glTextureCoord2f() calls repeat exactly the same for each face.</p></div></div><p>You&#39;re hardcoding them, not calculating them <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>And if you used triangle strip you could eliminate the second &quot;upper right&quot; call.</p></div></div><p>Sharing vertices can break some things. Especially when you get into texture atlasing. You will need completely separate uv coords per vertex especially if you want to use more than one texture per block (grass has three, dirt, grass top, and dirt+grass sides).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 30 Sep 2014 20:11:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/614683/1005736#target">Thomas Fjellstrom</a> said:</div><div class="quote"><p> You&#39;re hardcoding them, not calculating them</p></div></div><p>A minor detail.  Since they repeat endlessly, you could have had a loop that iterated over an array, with the array values grabbed from the example.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p> Sharing vertices can break some things. Especially when you get into texture atlasing. You will need completely separate uv coords per vertex especially if you want to use more than one texture per block (grass has three, dirt, grass top, and dirt+grass sides). </p></div></div><p>So you&#39;d need to start/stop each face, no problem.  In other words, I&#39;d have used glBegin(GL_TRIANGLE_STRIP) for each face with a glEnd() following each face instead of GL_TRIANGLES
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Tue, 30 Sep 2014 20:17:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/614683/1005737#target">Arthur Kalliokoski</a> said:</div><div class="quote"><p>A minor detail. Since they repeat endlessly, you could have had a loop that iterated over an array, with the array values grabbed from the example.</p></div></div><p>You seem to be misunderstanding. By calculate or generate I mean using actual math and code, and not hardcoding them.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>So you&#39;d need to start/stop each face, no problem. In other words, I&#39;d have used glBegin(GL_TRIANGLE_STRIP) for each face with a glEnd() following each face instead of GL_TRIANGLES</p></div></div><p>I suppose I could. But its just as easy to use a triangle list.</p><p>Also I&#39;m not using the gl immediate api, but OpenGL 3, so the old apis aren&#39;t available. I have to use Shaders and Vertex Buffer Objects. (but don&#39;t worry, I have all the code for it already)</p><p>append: For now I&#39;ve just stolen data from an exported blender .obj after figuring out how to actually get it to export the uv coordinates properly.</p><p>I restructured things a little bit as well. </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">const</span> <span class="k1">int</span> NUM_VERTS_SHARED <span class="k3">=</span> <span class="n">8</span><span class="k2">;</span>
<span class="number">  2</span>  VF3 verts<span class="k2">[</span>NUM_VERTS_SHARED<span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>
<span class="number">  3</span>    <span class="k2">{</span> <span class="n">1</span>.<span class="n">000000</span>, <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span>, <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span> <span class="k2">}</span>,
<span class="number">  4</span>    <span class="k2">{</span> <span class="n">1</span>.<span class="n">000000</span>, <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span>, <span class="n">1</span>.<span class="n">000000</span> <span class="k2">}</span>,
<span class="number">  5</span>    <span class="k2">{</span> <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span>, <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span>, <span class="n">1</span>.<span class="n">000000</span> <span class="k2">}</span>,
<span class="number">  6</span>    <span class="k2">{</span> <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span>, <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span>, <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span> <span class="k2">}</span>,
<span class="number">  7</span>    <span class="k2">{</span> <span class="n">1</span>.<span class="n">000000</span>, <span class="n">1</span>.<span class="n">000000</span>, <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span> <span class="k2">}</span>,
<span class="number">  8</span>    <span class="k2">{</span> <span class="n">0</span>.<span class="n">999999</span>, <span class="n">1</span>.<span class="n">000000</span>, <span class="n">1</span>.<span class="n">000000</span> <span class="k2">}</span>,
<span class="number">  9</span>    <span class="k2">{</span> <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span>, <span class="n">1</span>.<span class="n">000000</span>, <span class="n">1</span>.<span class="n">000000</span> <span class="k2">}</span>,
<span class="number"> 10</span>    <span class="k2">{</span> <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span>, <span class="n">1</span>.<span class="n">000000</span>, <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span> <span class="k2">}</span>
<span class="number"> 11</span>  <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 12</span>  
<span class="number"> 13</span>  VF2 txcs<span class="k2">[</span>NUM_VERTS_SHARED<span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>
<span class="number"> 14</span>    <span class="k2">{</span> <span class="n">0</span>.<span class="n">000000</span>, <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span> <span class="k2">}</span>,
<span class="number"> 15</span>    <span class="k2">{</span> <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span>, <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span> <span class="k2">}</span>,
<span class="number"> 16</span>    <span class="k2">{</span> <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span>, <span class="n">0</span>.<span class="n">000000</span> <span class="k2">}</span>,
<span class="number"> 17</span>    <span class="k2">{</span> <span class="k3">-</span><span class="n">1</span>.<span class="n">000000</span>, <span class="n">1</span>.<span class="n">000000</span> <span class="k2">}</span>,
<span class="number"> 18</span>    <span class="k2">{</span> <span class="k3">-</span><span class="n">0</span>.<span class="n">000000</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">000000</span> <span class="k2">}</span>,
<span class="number"> 19</span>    <span class="k2">{</span> <span class="k3">-</span><span class="n">0</span>.<span class="n">000000</span>, <span class="n">1</span>.<span class="n">000000</span> <span class="k2">}</span>,
<span class="number"> 20</span>    <span class="k2">{</span> <span class="n">1</span>.<span class="n">000000</span>, <span class="n">1</span>.<span class="n">000000</span> <span class="k2">}</span>,
<span class="number"> 21</span>    <span class="k2">{</span> <span class="n">1</span>.<span class="n">000000</span>, <span class="n">0</span>.<span class="n">000000</span> <span class="k2">}</span>
<span class="number"> 22</span>  <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 23</span>  
<span class="number"> 24</span>  <span class="k1">const</span> <span class="k1">int</span> NUM_FACES <span class="k3">=</span> <span class="n">12</span><span class="k2">;</span>
<span class="number"> 25</span>  VI3 vtxFaces<span class="k2">[</span>NUM_FACES<span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>
<span class="number"> 26</span>    <span class="k2">{</span> <span class="n">2</span>, <span class="n">3</span>, <span class="n">4</span> <span class="k2">}</span>,
<span class="number"> 27</span>    <span class="k2">{</span> <span class="n">8</span>, <span class="n">7</span>, <span class="n">6</span> <span class="k2">}</span>,
<span class="number"> 28</span>    <span class="k2">{</span> <span class="n">1</span>, <span class="n">5</span>, <span class="n">6</span> <span class="k2">}</span>,
<span class="number"> 29</span>    <span class="k2">{</span> <span class="n">2</span>, <span class="n">6</span>, <span class="n">7</span> <span class="k2">}</span>,
<span class="number"> 30</span>    <span class="k2">{</span> <span class="n">7</span>, <span class="n">8</span>, <span class="n">4</span> <span class="k2">}</span>,
<span class="number"> 31</span>    <span class="k2">{</span> <span class="n">1</span>, <span class="n">4</span>, <span class="n">8</span> <span class="k2">}</span>,
<span class="number"> 32</span>    <span class="k2">{</span> <span class="n">1</span>, <span class="n">2</span>, <span class="n">4</span> <span class="k2">}</span>,
<span class="number"> 33</span>    <span class="k2">{</span> <span class="n">5</span>, <span class="n">8</span>, <span class="n">6</span> <span class="k2">}</span>,
<span class="number"> 34</span>    <span class="k2">{</span> <span class="n">2</span>, <span class="n">1</span>, <span class="n">6</span> <span class="k2">}</span>,
<span class="number"> 35</span>    <span class="k2">{</span> <span class="n">3</span>, <span class="n">2</span>, <span class="n">7</span> <span class="k2">}</span>,
<span class="number"> 36</span>    <span class="k2">{</span> <span class="n">3</span>, <span class="n">7</span>, <span class="n">4</span> <span class="k2">}</span>,
<span class="number"> 37</span>    <span class="k2">{</span> <span class="n">5</span>, <span class="n">1</span>, <span class="n">8</span> <span class="k2">}</span>
<span class="number"> 38</span>  <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 39</span>  
<span class="number"> 40</span>  
<span class="number"> 41</span>  VI3 txFaces<span class="k2">[</span>NUM_FACES<span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span>
<span class="number"> 42</span>    <span class="k2">{</span> <span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span> <span class="k2">}</span>,
<span class="number"> 43</span>    <span class="k2">{</span> <span class="n">4</span>, <span class="n">3</span>, <span class="n">5</span> <span class="k2">}</span>,
<span class="number"> 44</span>    <span class="k2">{</span> <span class="n">5</span>, <span class="n">6</span>, <span class="n">4</span> <span class="k2">}</span>,
<span class="number"> 45</span>    <span class="k2">{</span> <span class="n">5</span>, <span class="n">6</span>, <span class="n">4</span> <span class="k2">}</span>,
<span class="number"> 46</span>    <span class="k2">{</span> <span class="n">6</span>, <span class="n">7</span>, <span class="n">8</span> <span class="k2">}</span>,
<span class="number"> 47</span>    <span class="k2">{</span> <span class="n">1</span>, <span class="n">2</span>, <span class="n">3</span> <span class="k2">}</span>,
<span class="number"> 48</span>    <span class="k2">{</span> <span class="n">5</span>, <span class="n">1</span>, <span class="n">3</span> <span class="k2">}</span>,
<span class="number"> 49</span>    <span class="k2">{</span> <span class="n">6</span>, <span class="n">4</span>, <span class="n">5</span> <span class="k2">}</span>,
<span class="number"> 50</span>    <span class="k2">{</span> <span class="n">3</span>, <span class="n">5</span>, <span class="n">4</span> <span class="k2">}</span>,
<span class="number"> 51</span>    <span class="k2">{</span> <span class="n">3</span>, <span class="n">5</span>, <span class="n">4</span> <span class="k2">}</span>,
<span class="number"> 52</span>    <span class="k2">{</span> <span class="n">5</span>, <span class="n">6</span>, <span class="n">8</span> <span class="k2">}</span>,
<span class="number"> 53</span>    <span class="k2">{</span> <span class="n">5</span>, <span class="n">1</span>, <span class="n">3</span> <span class="k2">}</span>
<span class="number"> 54</span>  <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 55</span>  
<span class="number"> 56</span>  CUSTOM_VERTEX <span class="k3">*</span>ptr <span class="k3">=</span> buff<span class="k2">;</span>
<span class="number"> 57</span>  
<span class="number"> 58</span>  <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> i <span class="k3">&lt;</span> NUM_FACES<span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 59</span>  <span class="k2">{</span>
<span class="number"> 60</span>    VI3 <span class="k3">&amp;</span>vtxface <span class="k3">=</span> vtxFaces<span class="k2">[</span>i<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 61</span>    VI3 <span class="k3">&amp;</span>txface <span class="k3">=</span> txFaces<span class="k2">[</span>i<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 62</span>    
<span class="number"> 63</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> j <span class="k3">&lt;</span> <span class="n">3</span><span class="k2">;</span> j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number"> 64</span>    <span class="k2">{</span>
<span class="number"> 65</span>      VF3 <span class="k3">&amp;</span>vert <span class="k3">=</span> verts<span class="k2">[</span>vtxface.i<span class="k2">[</span>j<span class="k2">]</span><span class="k3">-</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 66</span>      VF2 <span class="k3">&amp;</span>txc <span class="k3">=</span> txcs<span class="k2">[</span>txface.i<span class="k2">[</span>j<span class="k2">]</span><span class="k3">-</span><span class="n">1</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 67</span>      
<span class="number"> 68</span>      CUSTOM_VERTEX <span class="k3">&amp;</span>cv <span class="k3">=</span> <span class="k3">*</span>ptr<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 69</span>      
<span class="number"> 70</span>      cv.pos <span class="k3">=</span> vert<span class="k2">;</span>
<span class="number"> 71</span>      cv.txcoord <span class="k3">=</span> txc<span class="k2">;</span>
<span class="number"> 72</span>      cv.tx_page <span class="k3">=</span> <span class="n">1</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number"> 73</span>    <span class="k2">}</span>
<span class="number"> 74</span>  <span class="k2">}</span>
</div></div><p>

So yeah, it works now. But I&#39;d still like to see if theres a way to generate the uv coords from the vtx coords.</p><p>append:</p><p>So I finally have something that resembles something.</p><p><span class="remote-thumbnail"><span class="json">{"name":"EKwPne1.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/0\/d\/0d9a54103ddc56f86db2906233403003.png","w":1030,"h":795,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/0\/d\/0d9a54103ddc56f86db2906233403003"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/0/d/0d9a54103ddc56f86db2906233403003-240.jpg" alt="EKwPne1.png" width="240" height="185" /></span></p><p>Now with hacked in leaf, grass and log textures:</p><p><span class="remote-thumbnail"><span class="json">{"name":"Ze4gsEU.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/b\/9\/b99dde961377b18fa6df5f746670de35.png","w":1030,"h":795,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/b\/9\/b99dde961377b18fa6df5f746670de35"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/b/9/b99dde961377b18fa6df5f746670de35-240.jpg" alt="Ze4gsEU.png" width="240" height="185" /></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Wed, 01 Oct 2014 18:59:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/614683/1005739#target">Thomas Fjellstrom</a> said:</div><div class="quote"><p> I&#39;d still like to see if theres a way to generate the uv coords from the vtx coords.</p></div></div><p>I don&#39;t ever remember seeing such a calculation except for some gluCylinder etc. which is just a convenience, you could find the code in the Mesa source.</p><p>Googling a bit found <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb172339%28v=vs.85%29.aspx">this</a> for Direct X and <a href="http://www.informit.com/articles/article.aspx?p=770639&amp;seqNum=4">this</a> for Open GL.  Maybe the Mesa code used the latter, I don&#39;t remember.</p><p>That said, why would mapping a few square faces need such a thing?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Thu, 02 Oct 2014 00:27:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>To use that, he&#39;d have to define 6 planes to project his cube to each plane, to get the UV coordinates for each side. And the result would be 0/0, 0/1, 1/0, 1/1 every time :p
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Thu, 02 Oct 2014 00:54:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/614683/1005761#target">Arthur Kalliokoski</a> said:</div><div class="quote"><p>That said, why would mapping a few square faces need such a thing?</p></div></div><p>Learning exercises. Also I may have other shapes. but I&#39;ll probably just use models for the non cubic objects.</p><p>append:</p><p><span class="remote-thumbnail"><span class="json">{"name":"OtR0m0b.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/a\/3\/a36e3fa9ad430ec858fe52ea0223922d.png","w":1030,"h":795,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/a\/3\/a36e3fa9ad430ec858fe52ea0223922d"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/a/3/a36e3fa9ad430ec858fe52ea0223922d-240.jpg" alt="OtR0m0b.png" width="240" height="185" /></span></p><p>Latest version \o/
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sat, 04 Oct 2014 01:53:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Looks promising Thomas. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /> How did you get the world to curve?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 04 Oct 2014 02:13:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That&#39;s probably an artifact of the FOV, and the shape of the terrain. Mostly the FOV though. It&#39;s set to 90 right now <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sat, 04 Oct 2014 02:18:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I meant to reply to this a while ago, but I forgot.</p><p>I&#39;ve attached an excerpt from a primitive generator I made awhile ago. It should contain what you&#39;re looking for and then some.</p><p>It does vertices, texture, normals, tangents and bitangents for planes, cylinders, cubes, spheres, and cones, with configurable stacks and slices for each.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (relpatseht)</author>
		<pubDate>Wed, 08 Oct 2014 08:53:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>OOh, thanks man. I&#39;ll take a look at that while I&#39;m in the philippines (or thailand). Assuming work isn&#39;t too hectic of course.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Wed, 08 Oct 2014 18:57:25 +0000</pubDate>
	</item>
</rss>
