<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>[OpenGL] Cube drawing overlaps itself... but not others.</title>
		<link>http://www.allegro.cc/forums/view/615647</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 11 Aug 2015 22:19:18 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ve got this problem where a simple cube will overlap itself... but depth drawing appears to work and not overlap other cubes.</p><p><span class="remote-thumbnail"><span class="json">{"name":"609700","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/6\/3\/6334eb720e88ed3730f47bc353d0f0d6.jpg","w":398,"h":324,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/6\/3\/6334eb720e88ed3730f47bc353d0f0d6"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/6/3/6334eb720e88ed3730f47bc353d0f0d6-240.jpg" alt="609700" width="240" height="195" /></span></p><p>It&#39;s a super weird effect. I kept thinking my cube drawing function was missing a face, or the face was positioned in the center but it&#39;s not.</p><p>Here&#39;s some code... I tried to remove non-graphics related stuff.
</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="number">   2</span><span class="k1">int</span> initialize<span class="k2">(</span><span class="k2">)</span>
<span class="number">   3</span>  <span class="k2">{</span>
<span class="number">   4</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="number">   5</span>    <span class="k2">{</span>
<span class="number">   6</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Could not init Allegro.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">   7</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">   8</span>    <span class="k2">}</span>
<span class="number">   9</span>
<span class="number">  10</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">  11</span>  <a href="http://www.allegro.cc/manual/al_install_mouse"><span class="a">al_install_mouse</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>  <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">  14</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">  15</span>  
<span class="number">  16</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="k2">)</span><span class="k2">;</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_OPENGL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  18</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>SCREEN_WIDTH, SCREEN_HEIGHT<span class="k2">)</span><span class="k2">;</span>
<span class="number">  19</span>   
<span class="number">  20</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span> 
<span class="number">  21</span>    <span class="k2">{</span>
<span class="number">  22</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Error creating display\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  23</span>    <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number">  24</span>    <span class="k2">}</span>
<span class="number">  25</span>    
<span class="number">  26</span>  <a href="http://www.allegro.cc/manual/al_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_backbuffer"><span class="a">al_get_backbuffer</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</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">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span>  
<span class="number">  29</span>  glEnable<span class="k2">(</span>GL_DEPTH_TEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  30</span>    glDepthFunc<span class="k2">(</span> GL_LEQUAL <span class="k2">)</span><span class="k2">;</span>
<span class="number">  31</span>    glHint<span class="k2">(</span> GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST <span class="k2">)</span><span class="k2">;</span>
<span class="number">  32</span>    
<span class="number">  33</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number">  34</span>  <span class="k2">}</span>
<span class="number">  35</span>
<span class="number">  36</span><span class="k1">void</span> set_camera_position<span class="k2">(</span><span class="k2">)</span>
<span class="number">  37</span>  <span class="k2">{</span>
<span class="number">  38</span>  glMatrixMode<span class="k2">(</span>GL_PROJECTION<span class="k2">)</span><span class="k2">;</span>
<span class="number">  39</span>  glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>  glFrustum<span class="k2">(</span><span class="k3">-</span><span class="n">1</span>.<span class="n">0</span>, <span class="n">1</span>.<span class="n">0</span>, <span class="k3">-</span><span class="n">1</span>.<span class="n">0</span>, <span class="n">1</span>.<span class="n">0</span>, <span class="n">1</span>.<span class="n">0</span>, <span class="n">40</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>  glTranslatef<span class="k2">(</span>camera.x, camera.y, <span class="k3">-</span>camera.dist<span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>  glRotatef<span class="k2">(</span>camera.xangle, <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">  43</span>  glRotatef<span class="k2">(</span>camera.yangle, <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">  44</span>  glRotatef<span class="k2">(</span>camera.zangle, <span class="n">0</span>, <span class="n">0</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  45</span>  glMatrixMode<span class="k2">(</span>GL_MODELVIEW<span class="k2">)</span><span class="k2">;</span>
<span class="number">  46</span>  <span class="k2">}</span>
<span class="number">  47</span>
<span class="number">  48</span>
<span class="number">  49</span><span class="k1">void</span> draw_cube<span class="k2">(</span><span class="k2">)</span>
<span class="number">  50</span>  <span class="k2">{</span>
<span class="number">  51</span>  
<span class="number">  52</span>  glBegin<span class="k2">(</span>GL_QUADS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  53</span>  
<span class="number">  54</span>  <span class="c">// BOTTOM</span>
<span class="number">  55</span>  glColor3f<span class="k2">(</span>   <span class="n">0</span>.<span class="n">0</span>,  <span class="n">1</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">  56</span>  glVertex3f<span class="k2">(</span>  <span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>  glVertex3f<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="k3">-</span><span class="n">0</span>.<span class="n">5</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  58</span>  glVertex3f<span class="k2">(</span> <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>,  <span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  59</span>  glVertex3f<span class="k2">(</span> <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  60</span>  
<span class="number">  61</span>  <span class="c">// White side - TOP</span>
<span class="number">  62</span>  glColor3f<span class="k2">(</span>   <span class="n">1</span>.<span class="n">0</span>,  <span class="n">1</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">  63</span>  glVertex3f<span class="k2">(</span>  <span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</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">  64</span>  glVertex3f<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">  65</span>  glVertex3f<span class="k2">(</span> <span class="k3">-</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">  66</span>  glVertex3f<span class="k2">(</span> <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</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">  67</span>  
<span class="number">  68</span>  <span class="c">// Purple side - RIGHT</span>
<span class="number">  69</span>  glColor3f<span class="k2">(</span>  <span class="n">1</span>.<span class="n">0</span>,  <span class="n">0</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">  70</span>  glVertex3f<span class="k2">(</span> <span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  71</span>  glVertex3f<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="k3">-</span><span class="n">0</span>.<span class="n">5</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>  glVertex3f<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">  73</span>  glVertex3f<span class="k2">(</span> <span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</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">  74</span>  
<span class="number">  75</span>  <span class="c">// Green side - LEFT</span>
<span class="number">  76</span>  glColor3f<span class="k2">(</span>   <span class="n">0</span>.<span class="n">0</span>,  <span class="n">1</span>.<span class="n">0</span>,  <span class="n">0</span>.<span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  77</span>  glVertex3f<span class="k2">(</span> <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</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">  78</span>  glVertex3f<span class="k2">(</span> <span class="k3">-</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">  79</span>  glVertex3f<span class="k2">(</span> <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>,  <span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  80</span>  glVertex3f<span class="k2">(</span> <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</span>   
<span class="number">  82</span>  <span class="c">// Blue side - BACK</span>
<span class="number">  83</span>  glColor3f<span class="k2">(</span>   <span class="n">0</span>.<span class="n">0</span>,  <span class="n">0</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">  84</span>  glVertex3f<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">  85</span>  glVertex3f<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="k3">-</span><span class="n">0</span>.<span class="n">5</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  86</span>  glVertex3f<span class="k2">(</span> <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>,  <span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  87</span>  glVertex3f<span class="k2">(</span> <span class="k3">-</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">  88</span>  
<span class="number">  89</span>  <span class="c">// Red side - FRONT</span>
<span class="number">  90</span>  glColor3f<span class="k2">(</span>   <span class="n">1</span>.<span class="n">0</span>,  <span class="n">0</span>.<span class="n">0</span>,  <span class="n">0</span>.<span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>  glVertex3f<span class="k2">(</span>  <span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  92</span>  glVertex3f<span class="k2">(</span>  <span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</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">  93</span>  glVertex3f<span class="k2">(</span> <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</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">  94</span>  glVertex3f<span class="k2">(</span> <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span>, <span class="k3">-</span><span class="n">0</span>.<span class="n">5</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  95</span>  glEnd<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  96</span>  <span class="k2">}</span>
<span class="number">  97</span>
<span class="number">  98</span><span class="k1">void</span> draw_cube_at<span class="k2">(</span><span class="k1">double</span> x, <span class="k1">double</span> y, <span class="k1">double</span> z<span class="k2">)</span>
<span class="number">  99</span>  <span class="k2">{</span>
<span class="number"> 100</span>  glPushMatrix<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>    glTranslatef<span class="k2">(</span><span class="k3">-</span><span class="n">2</span>.<span class="n">5</span> <span class="k3">+</span> x, <span class="n">0</span>.<span class="n">0</span> <span class="k3">+</span>y , <span class="n">0</span>.<span class="n">0</span> <span class="k3">+</span> z<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 102</span>    draw_cube<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 103</span>  glPopMatrix<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</span>  <span class="k2">}</span>
</div></div><p>

Most of this stuff is derived from the opengl.cpp and opengl2.cpp Allegro examples.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Tue, 11 Aug 2015 01:09:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Check to see if you have the vertexes in the right order. I think the default is counterclockwise. But you can switch it with an opengl call.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 11 Aug 2015 01:12:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The easiest way to check if it&#39;s a backface issue, as Tomasu mentioned, is to disable backface culling.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (StevenVI)</author>
		<pubDate>Tue, 11 Aug 2015 01:31:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hmm, it really looks like a depth issue.</p><p><span class="remote-thumbnail"><span class="json">{"name":"609702","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/a\/4\/a4355f1e2f8bb08b90e8d977aca37be8.png","w":642,"h":505,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/a\/4\/a4355f1e2f8bb08b90e8d977aca37be8"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/a/4/a4355f1e2f8bb08b90e8d977aca37be8-240.jpg" alt="609702" width="240" height="188" /></span></p><p>All I did here was make the bottom face one unit cube lower (and change the color). They shouldn&#39;t be painting over everything.</p><p>[edit] Also, geez JPEG is a terrible format when dumping from mspaint. </p><p>[edit 2] replaced with PNG.</p><p>[edit 3] I just saw your post. I actually have disabled backface culling.</p><div class="source-code snippet"><div class="inner"><pre>glDisable<span class="k2">(</span>GL_CULL_FACE<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
To no avail.</p><p>[edit 4] Ah <i>crap</i>. Looks like I don&#39;t have a Z-buffer.</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> depth <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_option"><span class="a">al_get_display_option</span></a><span class="k2">(</span>display, ALLEGRO_DEPTH_SIZE<span class="k2">)</span><span class="k2">;</span>
  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>depth<span class="k2">)</span>
    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"No Z-buffer!\n"</span><span class="k2">)</span><span class="k2">;</span>
  <span class="k1">else</span>
    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Z-buffer %i-bits!\n"</span>, depth<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
Says no Z-Buffer.</p><p>... Yep... here&#39;s the line that was missing:
</p><div class="source-code snippet"><div class="inner"><pre>   <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, <span class="n">16</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

<span class="remote-thumbnail"><span class="json">{"name":"609703","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/a\/6\/a6de1bc6193305e6480e724d9faf3025.png","w":642,"h":505,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/a\/6\/a6de1bc6193305e6480e724d9faf3025"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/a/6/a6de1bc6193305e6480e724d9faf3025-240.jpg" alt="609703" width="240" height="188" /></span></p><p>Thanks everyone!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Tue, 11 Aug 2015 01:32:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You should also clear the depth buffer before rendering the scene. <span class="source-code">al_clear_depth_buffer<span class="k2">(</span><span class="n">1</span><span class="k2">)</span></span>.  1 is the farthest, 0 is the closest, so clear to anything greater than (or equal to) 1.  Probably do that after like, clearing the screen.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/615647/1015860#target">Chris Katko</a> said:</div><div class="quote"><p>Most of this stuff is derived from the opengl.cpp and opengl2.cpp Allegro examples. </p></div></div><p>
Shame on you!  You can do all that with Allegro&#39;s native functions. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Tue, 11 Aug 2015 03:28:40 +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/615647/1015864#target">Mark Oates</a> said:</div><div class="quote"><p>
Shame on you! You can do all that with Allegro&#39;s native functions. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div></div><p>
Allegro&#39;s functions don&#39;t have the documentation that GL ones do. I&#39;m still completely confused about when and where to use Allegro 5 functions verses OpenGL ones, and how to get back to Allegro 5 coordinates for drawing the overlay.</p><p>Simply pushing and popping matrices don&#39;t work, so either I need to save multiple ones (like projection and model, not just model), or Allegro changes something special I don&#39;t understand yet.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Tue, 11 Aug 2015 03:52:27 +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/615647/1015865#target">Chris Katko</a> said:</div><div class="quote"><p>Simply pushing and popping matrices don&#39;t work, so either I need to save multiple ones (like projection and model, not just model), or Allegro changes something special I don&#39;t understand yet. </p></div></div><p>

Each bitmap has its own projection.  So if you create the backbuffer, and then create <i>another sub-bitmap of the backbuffer</i>.  They will both have their own, separate <i>projections</i> but will draw to the same surface. <img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Tue, 11 Aug 2015 04:37:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ve also seen the same type of problem with the <a href="https://www.allegro.cc/forums/thread/608154/928882#target">Nouveau driver</a>, if you&#39;re on linux.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Tue, 11 Aug 2015 07:45:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><span class="remote-thumbnail"><span class="json">{"name":"609704","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/1\/217a9aa00ad4d8d0b9c02a5cc1b3cb8b.png","w":944,"h":793,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/2\/1\/217a9aa00ad4d8d0b9c02a5cc1b3cb8b"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/2/1/217a9aa00ad4d8d0b9c02a5cc1b3cb8b-240.jpg" alt="609704" width="240" height="201" /></span></p><p>Things are working, but I&#39;m not entirely sure why things are so slow. Surely, a bunch of glBegin/glEnd&#39;s are going to be slower but I&#39;m getting like ~23 FPS with this image. Each unit cube has their own begin and end. Perhaps it&#39;s because they&#39;re 128x128 textures each... but that shouldn&#39;t be too bad for a GeForce GTX 560 SE... I can run Fallout: New Vegas.</p><p>I&#39;m wondering how much VBOs/vertex arrays will help, and if a move toward the modern pipeline will speed things up... but still... a 50x50 set of cubes is pretty pathetic... I used to run far higher when I was doing my Minecraft-in-space game years ago. </p><p>I am running in a VM, which slows it &quot;somewhat&quot; (and does remove features like AA), but I&#39;m pretty sure my Minecraft game was also in a VM... maybe not... I don&#39;t remember it&#39;s been so long.</p><p><span class="remote-thumbnail"><span class="json">{"name":"O8DGS9c.jpg","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/4\/5\/4566f393bc13fff1dae8ab95cce0d64e.jpg","w":812,"h":638,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/4\/5\/4566f393bc13fff1dae8ab95cce0d64e"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/4/5/4566f393bc13fff1dae8ab95cce0d64e-240.jpg" alt="O8DGS9c.jpg" width="240" height="188" /></span></p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/615647/1015867#target">Mark Oates</a> said:</div><div class="quote"><p>
Each bitmap has its own projection. So if you create the backbuffer, and then create another sub-bitmap of the backbuffer. They will both have their own, separate projections but will draw to the same surface. <img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" />
</p></div></div><p>
That&#39;s a very confusion statement. How can a bitmap have a completely different projection from the global OpenGL stack?</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/615647/1015870#target">Arthur Kalliokoski</a> said:</div><div class="quote"><p>
I&#39;ve also seen the same type of problem with the Nouveau driver, if you&#39;re on linux.
</p></div></div><p>
I&#39;ve had some really crappy luck with them before as well. Lots of screen corruption issues.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Tue, 11 Aug 2015 08:01:51 +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/615647/1015872#target">Chris Katko</a> said:</div><div class="quote"><p>That&#39;s a very confusion statement. How can a bitmap have a completely different projection from the global OpenGL stack?</p></div></div><p>Allegro keeps track and switches back and forth iirc. Bitmaps are (by default) backed by a texture, and a FBO which gets you a completely separate render target so they may need a different projection than the display&#39;s projection.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 11 Aug 2015 08:07:16 +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/615647/1015872#target">Chris Katko</a> said:</div><div class="quote"><p>Surely, a bunch of glBegin/glEnd&#39;s are going to be slower but I&#39;m getting like ~23 FPS with this image.</p></div></div><p>Are you glBegin/glEnd for each square?  That&#39;ll cost ya.  Do it as one big prim and you can easily draw something with 100x more triangles.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Tue, 11 Aug 2015 10:49:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>But you can&#39;t do texture switches inside those, right?</p><p>Maybe I don&#39;t need those and I can just use a normal mesh with a single tiled texture.</p><p>I guess I could also use one texture with multiple tiles and specify the UV coordinates... though I&#39;m not sure if they&#39;d bleed into each other.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Chris Katko)</author>
		<pubDate>Tue, 11 Aug 2015 21:54:52 +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/615647/1015882#target">Chris Katko</a> said:</div><div class="quote"><p>though I&#39;m not sure if they&#39;d bleed into each other.</p></div></div><p>Atlasing is a very common thing. There is one thing that can cause bleeding (some filtering or other fancy thing), but the solution to that is to just add some transparent (or solid white/black) pixels between the individual textures.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Tue, 11 Aug 2015 22:19:18 +0000</pubDate>
	</item>
</rss>
