<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Problem rendering TTF font (Allegro 5)</title>
		<link>http://www.allegro.cc/forums/view/605910</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 27 Dec 2010 16:26:49 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m working on a small project using Allegro 5, and I&#39;ve encountered a problem when rendering text using a TTF font under what seems like very specific circumstances.</p><p>Put simply, if I enable mipmapping and then try to draw text using a loaded TTF font, nothing seems to actually be drawn. The problem only occurs with TTF fonts (bitmap fonts work fine) and moreover, only while using the OpenGL driver (D3D works fine, too).</p><p>I&#39;m using Allegro 5.0.0 RC3 with Visual Studio 2008 under Windows 7 64-bit. The graphics card is a NVIDIA GeForce 9800 GTX+, driver version 258.96.</p><p>I&#39;ve tried reproducing it on a different computer under Ubuntu 10.04 32-bit, where drawing works both with and without mipmapping. I&#39;m not very familiar with linux on the whole so I&#39;m not certain what other information would be helpful, nor do I know offhand what hardware the machine has, aside from an ATI graphics card.</p><p>Here is a small test program I made along with a screenshot of the four test results. The resources used are from the examples bundled with Allegro 5.</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;allegro5/allegro.h&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number">  3</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">  4</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">  5</span>
<span class="number">  6</span><span class="c">//#define USE_OPENGL</span>
<span class="number">  7</span><span class="c">//#define USE_MIPMAP</span>
<span class="number">  8</span>
<span class="number">  9</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 10</span><span class="k2">{</span>
<span class="number"> 11</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</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"> 13</span>
<span class="number"> 14</span><span class="p">#ifdef USE_OPENGL</span>
<span class="number"> 15</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_WINDOWED <span class="k3">|</span> ALLEGRO_OPENGL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span><span class="p">#else</span>
<span class="number"> 17</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_WINDOWED <span class="k3">|</span> ALLEGRO_DIRECT3D_INTERNAL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span><span class="p">#endif</span>
<span class="number"> 19</span>
<span class="number"> 20</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span> display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span><span class="n">480</span>, <span class="n">128</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>
<span class="number"> 22</span><span class="p">#ifdef USE_OPENGL</span>
<span class="number"> 23</span><span class="p">#  ifdef USE_MIPMAP</span>
<span class="number"> 24</span>  <a href="http://www.allegro.cc/manual/al_set_window_title"><span class="a">al_set_window_title</span></a><span class="k2">(</span>display, <span class="s">"OpenGL (using mipmaps)"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span><span class="p">#  else</span>
<span class="number"> 26</span>  <a href="http://www.allegro.cc/manual/al_set_window_title"><span class="a">al_set_window_title</span></a><span class="k2">(</span>display, <span class="s">"OpenGL (no mipmaps)"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span><span class="p">#  endif</span>
<span class="number"> 28</span><span class="p">#else</span>
<span class="number"> 29</span><span class="p">#  ifdef USE_MIPMAP</span>
<span class="number"> 30</span>  <a href="http://www.allegro.cc/manual/al_set_window_title"><span class="a">al_set_window_title</span></a><span class="k2">(</span>display, <span class="s">"D3D (using mipmaps)"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span><span class="p">#  else</span>
<span class="number"> 32</span>  <a href="http://www.allegro.cc/manual/al_set_window_title"><span class="a">al_set_window_title</span></a><span class="k2">(</span>display, <span class="s">"D3D (no mipmaps)"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span><span class="p">#  endif</span>
<span class="number"> 34</span><span class="p">#endif</span>
<span class="number"> 35</span>
<span class="number"> 36</span>  <a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span>  <a href="http://www.allegro.cc/manual/al_init_font_addon"><span class="a">al_init_font_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>  <a href="http://www.allegro.cc/manual/al_init_ttf_addon"><span class="a">al_init_ttf_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>
<span class="number"> 40</span><span class="p">#ifdef USE_MIPMAP</span>
<span class="number"> 41</span>  <a href="http://www.allegro.cc/manual/al_set_new_bitmap_flags"><span class="a">al_set_new_bitmap_flags</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_new_bitmap_flags"><span class="a">al_get_new_bitmap_flags</span></a><span class="k2">(</span><span class="k2">)</span> <span class="k3">|</span> ALLEGRO_MIPMAP<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 42</span><span class="p">#endif</span>
<span class="number"> 43</span>
<span class="number"> 44</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a><span class="k3">*</span> font_ttf <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_font"><span class="a">al_load_font</span></a><span class="k2">(</span><span class="s">"DejaVuSans.ttf"</span>, <span class="n">36</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a><span class="k3">*</span> font_bmp <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_font"><span class="a">al_load_font</span></a><span class="k2">(</span><span class="s">"bmpfont.tga"</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>
<span class="number"> 47</span>  <span class="k1">while</span> <span class="k2">(</span><span class="k1">true</span><span class="k2">)</span>
<span class="number"> 48</span>  <span class="k2">{</span>
<span class="number"> 49</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_KEYBOARD_STATE"><span class="a">ALLEGRO_KEYBOARD_STATE</span></a> keyboard_state<span class="k2">;</span>
<span class="number"> 50</span>    <a href="http://www.allegro.cc/manual/al_get_keyboard_state"><span class="a">al_get_keyboard_state</span></a><span class="k2">(</span><span class="k3">&amp;</span>keyboard_state<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 51</span>
<span class="number"> 52</span>    <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_key_down"><span class="a">al_key_down</span></a><span class="k2">(</span><span class="k3">&amp;</span>keyboard_state, ALLEGRO_KEY_ESCAPE<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 53</span>      <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 54</span>
<span class="number"> 55</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">128</span>, <span class="n">192</span>, <span class="n">225</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 56</span>
<span class="number"> 57</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>font_ttf, <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">10</span>.<span class="n">0f</span>, <span class="n">10</span>.<span class="n">0f</span>, ALLEGRO_ALIGN_LEFT, <span class="s">"Lorem ipsum"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>    <a href="http://www.allegro.cc/manual/al_draw_text"><span class="a">al_draw_text</span></a><span class="k2">(</span>font_bmp, <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">10</span>.<span class="n">0f</span>, <span class="n">60</span>.<span class="n">0f</span>, ALLEGRO_ALIGN_LEFT, <span class="s">"Lorem ipsum"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 59</span>
<span class="number"> 60</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"> 61</span>  <span class="k2">}</span>
<span class="number"> 62</span>
<span class="number"> 63</span>  <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</span></a><span class="k2">(</span>font_ttf<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 64</span>  <a href="http://www.allegro.cc/manual/al_destroy_font"><span class="a">al_destroy_font</span></a><span class="k2">(</span>font_bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 65</span>
<span class="number"> 66</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"> 67</span><span class="k2">}</span>
</div></div><p>

<span class="remote-thumbnail"><span class="json">{"name":"Z9t9a.png","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/0\/20e3c6b616c8a07e430f4ff9b35e8dbc.png","w":496,"h":664,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/0\/20e3c6b616c8a07e430f4ff9b35e8dbc"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/2/0/20e3c6b616c8a07e430f4ff9b35e8dbc-240.jpg" alt="Z9t9a.png" width="240" height="321" /></span></p><p>Any help would be greatly appreciated.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Toumaz)</author>
		<pubDate>Sun, 26 Dec 2010 23:49:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I can reproduce it here under Linux/nvidia. I&#39;ll try to look at it.</p><p>EDIT: Test this patch for me.</p><p>EDIT2: New patch.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Wang)</author>
		<pubDate>Mon, 27 Dec 2010 05:50:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That does seem to have done the trick - drawing works fine now. <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" /><br />Thanks a lot for the speedy response and for an excellent library!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Toumaz)</author>
		<pubDate>Mon, 27 Dec 2010 16:26:49 +0000</pubDate>
	</item>
</rss>
