<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Problem: Allegro 5 &amp; Opengl text drawing</title>
		<link>http://www.allegro.cc/forums/view/610149</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 04 May 2012 13:32:34 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have a problem with the allegro 5 and opengl combination</p><p>I want to use al_draw_textf for my fps counter. But it is always behind the perspective of opengl.</p><p>I use the functions in given sequence.<br />Can somebody please help me???</p><p>Code:
</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> Renderer::InitOpenGL<span class="k2">(</span><span class="k2">)</span>
<span class="number">  2</span>    <span class="k2">{</span>
<span class="number">  3</span>        glMatrixMode<span class="k2">(</span> GL_PROJECTION <span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>        glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>        gluPerspective<span class="k2">(</span><span class="n">45</span>.<span class="n">0f</span>,<span class="k2">(</span>GLfloat<span class="k2">)</span>WIDTH<span class="k3">/</span><span class="k2">(</span>GLfloat<span class="k2">)</span>HEIGHT,<span class="n">0</span>.<span class="n">1f</span>,<span class="n">100</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span>        glMatrixMode<span class="k2">(</span>GL_MODELVIEW<span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>
<span class="number">  9</span>        glEnable<span class="k2">(</span>GL_TEXTURE_2D<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>        glEnable<span class="k2">(</span>GL_CULL_FACE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>        glEnable<span class="k2">(</span>GL_DEPTH_TEST<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>        glShadeModel<span class="k2">(</span>GL_SMOOTH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>
<span class="number"> 14</span>        glDepthMask<span class="k2">(</span>GL_TRUE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span>        <span class="c">//glPolygonMode(GL_FRONT,GL_LINE);</span>
<span class="number"> 17</span>        glPolygonMode<span class="k2">(</span>GL_FRONT,GL_FILL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</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"> 20</span>    <span class="k2">}</span>
</div></div><p>
</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> Renderer::RenderBlock<span class="k2">(</span><span class="k1">float</span> x, <span class="k1">float</span> y, <span class="k1">float</span> z, <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> texture<span class="k2">)</span>
<span class="number">  2</span>    <span class="k2">{</span>
<span class="number">  3</span>        glPushMatrix<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>        glTranslatef<span class="k2">(</span>x,y,z<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>        glBindTexture<span class="k2">(</span>GL_TEXTURE_2D, <a href="http://www.allegro.cc/manual/al_get_opengl_texture"><span class="a">al_get_opengl_texture</span></a><span class="k2">(</span>texture<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span>        glBegin<span class="k2">(</span>GL_QUADS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>            <span class="c">// Front Face</span>
<span class="number">  9</span>            <span class="c">//glNormal3f( 0.0f, 0.0f, 1.0f);</span>
<span class="number"> 10</span>            glTexCoord2f<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="k2">)</span><span class="k2">;</span> glVertex3f<span class="k2">(</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="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>            glTexCoord2f<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="k2">)</span><span class="k2">;</span> glVertex3f<span class="k2">(</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="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>            glTexCoord2f<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="k2">)</span><span class="k2">;</span> glVertex3f<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="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>            glTexCoord2f<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="k2">)</span><span class="k2">;</span> glVertex3f<span class="k2">(</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="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>            <span class="c">// Back Face</span>
<span class="number"> 15</span>            <span class="c">//glNormal3f( 0.0f, 0.0f,-1.0f);</span>
<span class="number"> 16</span>            glTexCoord2f<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="k2">)</span><span class="k2">;</span> glVertex3f<span class="k2">(</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="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>            glTexCoord2f<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="k2">)</span><span class="k2">;</span> glVertex3f<span class="k2">(</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="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>            glTexCoord2f<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="k2">)</span><span class="k2">;</span> glVertex3f<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="k3">-</span><span class="n">1</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>            glTexCoord2f<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="k2">)</span><span class="k2">;</span> glVertex3f<span class="k2">(</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="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>
<span class="number"> 21</span>            <span class="c">// All the other faces :D</span>
<span class="number"> 22</span>        glEnd<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>        glPopMatrix<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>    <span class="k2">}</span>
</div></div><p>
</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> Renderer::DrawFPS<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <span class="k1">int</span> fps<span class="k2">)</span>
<span class="number"> 2</span>    <span class="k2">{</span>
<span class="number"> 3</span>        <a href="http://www.allegro.cc/manual/al_draw_textf"><span class="a">al_draw_textf</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a>, <a href="http://www.allegro.cc/manual/al_map_rgb"><span class="a">al_map_rgb</span></a><span class="k2">(</span><span class="n">255</span>, <span class="n">255</span>, <span class="n">255</span><span class="k2">)</span>, <span class="n">5</span>, <span class="n">5</span>, <span class="n">0</span>, <span class="s">"FPS: %i"</span>, fps<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 4</span>    <span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ghost101)</author>
		<pubDate>Wed, 02 May 2012 20:16:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Easiest way will be a brute foce method like:
</p><div class="source-code snippet"><div class="inner"><pre><span class="c">// Just pseudocode, look up documentationf or all functions.</span>

<span class="c">// right after al_create_display</span>
glGetDoublev<span class="k2">(</span>GL_MODELVIEW_MATRIX, modelview<span class="k2">)</span>
glGetDoublev<span class="k2">(</span>GL_PROJECTION_MATRIX, projection<span class="k2">)</span>
glGetDoublev<span class="k2">(</span>GL_VIEWPORT, viewport<span class="k2">)</span>

<span class="c">// then later, before using Allegro functions</span>
glViewport<span class="k2">(</span>viewport<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, viewport<span class="k2">[</span><span class="n">1</span><span class="k2">]</span>, viewport<span class="k2">[</span><span class="n">2</span><span class="k2">]</span>, viewport<span class="k2">[</span><span class="n">3</span><span class="k2">]</span><span class="k2">)</span>
glMatrixMode<span class="k2">(</span>GL_PROJECTION<span class="k2">)</span>
gLoadMatrixd<span class="k2">(</span>projection<span class="k2">)</span>
glMatrixMode<span class="k2">(</span>GL_MODELVIEW<span class="k2">)</span>
gLoadMatrixd<span class="k2">(</span>modelview<span class="k2">)</span>
</pre></div></div><p>

Basically, store whatever is the current transformation setup Allegro uses, then restore to that whenever using Allegro functions.</p><p>Alternatively you could check Allegro&#39;s source code and just set up the same matrices.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Wed, 02 May 2012 21:06:24 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>ok thanks for the reaction but is there no way to not brute force it I wass thinking something like making one viewport transparant</p><p>or else is there a way to use text in opengl
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ghost101)</author>
		<pubDate>Thu, 03 May 2012 22:39:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you want the text to not be affected by the perspective transform, you need to disable that transform, no matter how you draw it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Thu, 03 May 2012 23:57:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Why not just push and pop the relevant matrices?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Fri, 04 May 2012 00:00:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>ok that is something I am going to try <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ghost101)</author>
		<pubDate>Fri, 04 May 2012 13:32:34 +0000</pubDate>
	</item>
</rss>
