<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Alpha blending a triangle with a textured triangle in openGL</title>
		<link>http://www.allegro.cc/forums/view/612551</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 10 May 2013 02:06:38 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>in this program,<br /><a href="https://www.allegro.cc/forums/thread/612527/981976#target">https://www.allegro.cc/forums/thread/612527/981976#target</a><br />I&#39;ve got pairs of 3d triangles making up a terrain. I also subdivide them into powers of 2, depending on how close the camera is to the middle of the 2 triangles&#39; shared edge.</p><p>I want to draw the triangles with the 3 corner colours interpolated smoothly blended with a repeating procedurally generated detail texture.</p><p>I&#39;m wondering if there&#39;s a way to draw a normal triangle, like this </p><div class="source-code snippet"><div class="inner"><pre>glBegin<span class="k2">(</span>GL_TRIANGLE_STRIP<span class="k2">)</span><span class="k2">;</span>
glColor3d<span class="k2">(</span><span class="n">0</span>.<span class="n">75</span>,<span class="n">0</span>.<span class="n">25</span>,<span class="n">0</span>.<span class="n">25</span><span class="k2">)</span><span class="k2">;</span>
glVertex3d<span class="k2">(</span> <span class="n">0</span>,<span class="n">1</span>,<span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
glColor3d<span class="k2">(</span><span class="n">0</span>.<span class="n">25</span>,<span class="n">0</span>.<span class="n">75</span>,<span class="n">0</span>.<span class="n">25</span><span class="k2">)</span><span class="k2">;</span>
glVertex3d<span class="k2">(</span> <span class="n">1</span>,<span class="n">0</span>,<span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
glColor3d<span class="k2">(</span><span class="n">0</span>.<span class="n">25</span>,<span class="n">0</span>.<span class="n">25</span>,<span class="n">0</span>.<span class="n">75</span><span class="k2">)</span><span class="k2">;</span>
glVertex3d<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>
glEnd<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

with a repeating texture modifying the colour of each pixel in the triangle. The detail textures in Deus Ex are my inspiration for wanting to do this.</p><p>Sorry if there&#39;s an obvious answer I should have found.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (altalena)</author>
		<pubDate>Thu, 09 May 2013 08:32:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Assuming you&#39;re using Allegro and you have loaded the texture into a bitmap, then</p><div class="source-code snippet"><div class="inner"><pre>GLint tex <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>allegro_bitmap<span class="k2">)</span><span class="k2">;</span>
glEnable<span class="k2">(</span>GL_TEXTURE_2D<span class="k2">)</span><span class="k2">;</span>
glBindTexture<span class="k2">(</span>GL_TEXTURE_2D, tex<span class="k2">)</span><span class="k2">;</span>

glBegin<span class="k2">(</span>GL_TRIANGLES<span class="k2">)</span><span class="k2">;</span>
glTexCoord3d<span class="k2">(</span>tu, tv<span class="k2">)</span>
<span class="c">/* Define the rest of this vertex */</span>
... more vertices ...
</pre></div></div><p>

tu and tv are texture coordinates. In OpenGL by default those are from 0 (left and bottom) to 1 (right and top).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Thu, 09 May 2013 09:38:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I tried what you suggested, but the program crashes now. Is there a short example program that just loads a .png and draws a textured triangle?</p><p>edit:</p><p>I attached the program I&#39;m working on<br />here&#39;s some of the code I&#39;m using(example):</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;GL/glu.h&gt;</span>
<span class="number">  2</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>image <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  3</span>image <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"noise.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>GLuint texture <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>image<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span><span class="k1">if</span> <span class="k2">(</span>texture <span class="k3">!</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span>
<span class="number">  6</span>    glBindTexture<span class="k2">(</span>GL_TEXTURE_2D, texture<span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>glEnable<span class="k2">(</span>GL_DEPTH_TEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>glDepthMask<span class="k2">(</span>GL_TRUE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</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"> 10</span>glMatrixMode<span class="k2">(</span>GL_PROJECTION<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>gluPerspective<span class="k2">(</span><span class="n">85</span>,aspect_ratio,<span class="n">0</span>.<span class="n">001</span>,<span class="n">1000000</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>gluLookAt<span class="k2">(</span>eye<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>,eye<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>,eye<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>,                            <span class="c">// camera is here</span>
<span class="number"> 14</span>          looking_at<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>,looking_at<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>,looking_at<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>,       <span class="c">// camera is looking towards this point</span>
<span class="number"> 15</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="k2">;</span>                                 <span class="c">// up vector</span>
<span class="number"> 16</span>
<span class="number"> 17</span>glMatrixMode<span class="k2">(</span>GL_MODELVIEW<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>glClear<span class="k2">(</span>GL_DEPTH_BUFFER_BIT<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>glPolygonMode<span class="k2">(</span>GL_FRONT_AND_BACK, GL_FILL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>glClear<span class="k2">(</span>GL_DEPTH_BUFFER_BIT<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>
<span class="number"> 23</span>glBegin<span class="k2">(</span>GL_TRIANGLES<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>glColor3d<span class="k2">(</span><span class="n">0</span>.<span class="n">5</span>,<span class="n">0</span>.<span class="n">5</span>,<span class="n">0</span>.<span class="n">5</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>glTexCoord2d<span class="k2">(</span><span class="n">1</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>glVertex3d<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"> 27</span>glTexCoord2d<span class="k2">(</span><span class="n">1</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>glVertex3d<span class="k2">(</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"> 29</span>glTexCoord2d<span class="k2">(</span><span class="n">0</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>glVertex3d<span class="k2">(</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"> 31</span>glEnd<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (altalena)</author>
		<pubDate>Fri, 10 May 2013 00:07:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The code I posted will not crash as long as allegro_bitmap is valid.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Fri, 10 May 2013 01:28:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks. I&#39;m gonna try <a href="http://wiki.allegro.cc/index.php?title=2D_using_OpenGL">http://wiki.allegro.cc/index.php?title=2D_using_OpenGL</a>, and I&#39;ll edit if I get it to work.</p><p>edit: </p><p>I&#39;m embarrassed to say I couldn&#39;t get it to work. Is there an example program anywhere that draws textured triangles?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (altalena)</author>
		<pubDate>Fri, 10 May 2013 02:06:38 +0000</pubDate>
	</item>
</rss>
