<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Need help initializing OpenGL 3.0+ in Allegro</title>
		<link>http://www.allegro.cc/forums/view/609996</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 12 Apr 2012 10:43:49 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hello, I have been trying to search around the internet for info or tutorials on OpenGL 3.0, but every tutorial I&#39;ve found requires extra libraries. I figured that with Allegro 5, I can completely skip GLUT altogether. Unfortunately, I haven&#39;t been able to get even a simple blue window to pop up.<br />Could anybody help me out with this? <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /></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;cstdio&gt;</span>
<span class="number">   2</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   3</span><span class="p">#include &lt;allegro5/allegro_opengl.h&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;GL/gl3.h&gt;</span>
<span class="number">   5</span><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span>
<span class="number">   6</span>
<span class="number">   7</span><span class="p">#ifndef FPS</span>
<span class="number">   8</span><span class="p">#define FPS 60.0</span>
<span class="number">   9</span><span class="p">#endif</span>
<span class="number">  10</span>
<span class="number">  11</span><span class="k1">bool</span> initAL<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  12</span><span class="k1">void</span> initGL<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  13</span>
<span class="number">  14</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  15</span>  <span class="k1">if</span> <span class="k2">(</span>initAL<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  16</span>    initGL<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  17</span>  <span class="k2">}</span>
<span class="number">  18</span>  <span class="k1">else</span> <span class="k2">{</span>
<span class="number">  19</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  20</span>  <span class="k2">}</span>
<span class="number">  21</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</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="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: could not install keyboard driver.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  23</span>    <span class="k1">return</span> <span class="k3">-</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>  <span class="k1">bool</span> done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  27</span>  <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  28</span>  <span class="k1">int</span> scrW <span class="k3">=</span> <span class="n">640</span><span class="k2">;</span>
<span class="number">  29</span>  <span class="k1">int</span> scrH <span class="k3">=</span> <span class="n">480</span><span class="k2">;</span>
<span class="number">  30</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> NULL<span class="k2">;</span>
<span class="number">  31</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a><span class="k3">*</span> timer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  32</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a><span class="k3">*</span> event_queue <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  33</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> event<span class="k2">;</span>
<span class="number">  34</span>  
<span class="number">  35</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>
<span class="number">  36</span>          ALLEGRO_RESIZABLE  <span class="k3">|</span>
<span class="number">  37</span>          ALLEGRO_OPENGL_3_0  <span class="k3">|</span>
<span class="number">  38</span>          ALLEGRO_OPENGL_FORWARD_COMPATIBLE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  39</span>  <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_COLOR_SIZE,  <span class="n">32</span>,  ALLEGRO_REQUIRE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>  <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">24</span>,  ALLEGRO_REQUIRE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>  <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_STENCIL_SIZE,  <span class="n">8</span>,  ALLEGRO_REQUIRE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>  <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_AUX_BUFFERS,  <span class="n">0</span>,  ALLEGRO_REQUIRE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>  <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_SAMPLE_BUFFERS,  <span class="n">1</span>,  ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  44</span>  <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_SAMPLES,  <span class="n">4</span>,  ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  45</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>scrW, scrH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  46</span>  <span class="k1">if</span> <span class="k2">(</span>display <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  47</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: Failed to create Display.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  48</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  49</span>  <span class="k2">}</span>
<span class="number">  50</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_new_display_flags"><span class="a">al_get_new_display_flags</span></a><span class="k2">(</span><span class="k2">)</span> ^ <span class="k2">(</span>ALLEGRO_OPENGL_FORWARD_COMPATIBLE <span class="k3">|</span> ALLEGRO_OPENGL_3_0<span class="k2">)</span><span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  51</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: Could not get an OpenGL 3.0 display.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  52</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  53</span>  <span class="k2">}</span>
<span class="number">  54</span>  <span class="k1">else</span> <span class="k2">{</span>
<span class="number">  55</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"OpenGL 3.0 capable display detected.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</span>    <a href="http://www.allegro.cc/manual/al_set_current_opengl_context"><span class="a">al_set_current_opengl_context</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>  <span class="k2">}</span>
<span class="number">  58</span>  
<span class="number">  59</span>  timer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0f</span> <span class="k3">/</span> FPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  60</span>  event_queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  61</span>  <span class="k1">if</span> <span class="k2">(</span>event_queue <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  62</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: Failed to create Event Queue.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  64</span>  <span class="k2">}</span>
<span class="number">  65</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  66</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  67</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  68</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  69</span>  
<span class="number">  70</span>  <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  71</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span>    
<span class="number">  73</span>    <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  74</span>      redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  75</span>    <span class="k2">}</span>
<span class="number">  76</span>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  77</span>      <span class="k1">if</span> <span class="k2">(</span>event.keyboard.keycode <span class="k3">!</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  78</span>        
<span class="number">  79</span>      <span class="k2">}</span>
<span class="number">  80</span>      <span class="k1">else</span> <span class="k2">{</span>
<span class="number">  81</span>        done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  82</span>      <span class="k2">}</span>
<span class="number">  83</span>    <span class="k2">}</span>
<span class="number">  84</span>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_UP<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  85</span>      
<span class="number">  86</span>    <span class="k2">}</span>
<span class="number">  87</span>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_RESIZE<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  88</span>      <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_acknowledge_resize"><span class="a">al_acknowledge_resize</span></a><span class="k2">(</span>event.display.source<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  89</span>        scrW <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_width"><span class="a">al_get_display_width</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number">  90</span>        scrH <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_height"><span class="a">al_get_display_height</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</span>      <span class="k2">}</span>
<span class="number">  92</span>      <span class="k1">else</span> <span class="k2">{</span>
<span class="number">  93</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"WARNING: Failed to resize display.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  94</span>      <span class="k2">}</span>
<span class="number">  95</span>    <span class="k2">}</span>
<span class="number">  96</span>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  97</span>      done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  98</span>    <span class="k2">}</span>
<span class="number">  99</span>    <span class="k1">if</span> <span class="k2">(</span>redraw <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 100</span>      glClear<span class="k2">(</span>GL_COLOR_BUFFER_BIT <span class="k3">|</span> GL_DEPTH_BUFFER_BIT <span class="k3">|</span> GL_STENCIL_BUFFER_BIT<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>      glViewport<span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,scrW,scrH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 102</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"> 103</span>      redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 104</span>    <span class="k2">}</span>
<span class="number"> 105</span>  <span class="k2">}</span>
<span class="number"> 106</span>  
<span class="number"> 107</span>  <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 108</span>  <a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 109</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"> 110</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 111</span><span class="k2">}</span>
<span class="number"> 112</span>
<span class="number"> 113</span><span class="k1">bool</span> initAL<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 114</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="k2">{</span>
<span class="number"> 115</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: Allegro failed to initialize.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 116</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 117</span>  <span class="k2">}</span>
<span class="number"> 118</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</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="k2">{</span>
<span class="number"> 119</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: Failed to install Allegro Keyboard.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 120</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 121</span>  <span class="k2">}</span>
<span class="number"> 122</span>  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 123</span><span class="k2">}</span>
<span class="number"> 124</span>
<span class="number"> 125</span><span class="k1">void</span> initGL<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 126</span>  glClearColor<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="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"> 127</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (chex_5)</author>
		<pubDate>Thu, 12 Apr 2012 06:05:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><span class="source-code">initGL<span class="k2">(</span><span class="k2">)</span></span> needs to be called <i>after</i> the display is successfully created.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Erin Maus)</author>
		<pubDate>Thu, 12 Apr 2012 06:34:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I tried it and had to comment out the &quot;#include &lt;GL/gl3.h&gt;&quot; line to get it to compile, and got this error:</p><pre>/home/prog/allegro-5.0.5/src/opengl/extensions.c:190: print_extensions: Assertion `extension&#39; failed.
Aborted
</pre><p>

glxinfo said this:</p><pre>
GLX version: 1.4
OpenGL version string: 3.3.0 NVIDIA 270.41.19
</pre><p>

All the relevant examples supplied with the library work properly.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Thu, 12 Apr 2012 06:40:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I tried putting initGL() after the display initialization, but it still made no difference. The screen is still black <img src="http://www.allegro.cc/forums/smileys/sad.gif" alt=":(" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (chex_5)</author>
		<pubDate>Thu, 12 Apr 2012 06:42:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Oh, looks like you forgot to use <span class="source-code">ALLEGRO_OPENGL</span> when creating the display. To use a forward compatible OpenGL 3 display, you have to pass, e.g.:</p><p><span class="source-code"><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_3_0 <span class="k3">|</span> ALLEGRO_OPENGL_FORWARD_COMPATIBLE <span class="k3">|</span> ALLEGRO_OPENGL<span class="k2">)</span><span class="k2">;</span></span></p><p>If you&#39;re on Windows, it will still use the DirectX backend if you don&#39;t request to use an OpenGL one. Without <span class="source-code">ALLEGRO_OPENGL</span>, the other two options are ignored.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Erin Maus)</author>
		<pubDate>Thu, 12 Apr 2012 08:43:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks for the feedback so far.</p><p>Arthur, I used the gl3.h header from the <a href="http://www.opengl.org/registry/">OpenGL Registry</a> (versus the regular gl.h), although I don&#39;t know if there are any extra steps I needed to take after including it.</p><p>Arron, after I included the ALLEGRO_OPENGL flag, the program now crashes when creating a window. I have an Nvidia gtx260, so I know it&#39;s OpenGL 3.x compatible, but I have no idea why it crashes now.<br />I&#39;ll keep playing with the program though. Maybe there&#39;s just an extra line I haven&#39;t included just yet.</p><p>EDIT:<br />I GOT IT!!! <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /><img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /><img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /><br />The problem was where I had the line <span class="source-code">al_get_new_display_flag<span class="k2">(</span><span class="k2">)</span></span> placed after the display initialized. I instead had to change it to <span class="source-code">al_get_display_flag<span class="k2">(</span>display<span class="k2">)</span></span>. I feel so stupid right now.<br />I also had to remove the flag <span class="source-code">ALLEGRO_OPENGL_FORWARD_COMPATIBLE</span> to get it running.</p><p>Anyway here&#39;s the final initialization code (just in case anyone else runs into these problems):
</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">   3</span><span class="p">#include &lt;cstdio&gt;</span>
<span class="number">   4</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   5</span><span class="p">#include &lt;allegro5/allegro_opengl.h&gt;</span>
<span class="number">   6</span><span class="p">#include &lt;GL/gl.h&gt;</span>
<span class="number">   7</span><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span>
<span class="number">   8</span>
<span class="number">   9</span><span class="p">#ifndef FPS</span>
<span class="number">  10</span><span class="p">#define FPS 60.0</span>
<span class="number">  11</span><span class="p">#endif</span>
<span class="number">  12</span>
<span class="number">  13</span><span class="k1">bool</span> initAL<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  14</span><span class="k1">void</span> initGL<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  15</span>
<span class="number">  16</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  17</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>initAL<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  18</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</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="k2">{</span>
<span class="number">  19</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: could not install keyboard driver.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  20</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  21</span>  <span class="k2">}</span>
<span class="number">  22</span>  
<span class="number">  23</span>  <span class="k1">bool</span> done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  24</span>  <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  25</span>  <span class="k1">int</span> scrW <span class="k3">=</span> <span class="n">640</span><span class="k2">;</span>
<span class="number">  26</span>  <span class="k1">int</span> scrH <span class="k3">=</span> <span class="n">480</span><span class="k2">;</span>
<span class="number">  27</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> NULL<span class="k2">;</span>
<span class="number">  28</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a><span class="k3">*</span> timer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  29</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a><span class="k3">*</span> event_queue <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  30</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> event<span class="k2">;</span>
<span class="number">  31</span>  
<span class="number">  32</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>
<span class="number">  33</span>          ALLEGRO_RESIZABLE  <span class="k3">|</span>
<span class="number">  34</span>          ALLEGRO_OPENGL_3_0  <span class="k3">|</span>
<span class="number">  35</span>          ALLEGRO_OPENGL    <span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span>  <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_COLOR_SIZE,  <span class="n">32</span>,  ALLEGRO_REQUIRE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  37</span>  <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">24</span>,  ALLEGRO_REQUIRE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  38</span>  <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_STENCIL_SIZE,  <span class="n">8</span>,  ALLEGRO_REQUIRE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  39</span>  <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_AUX_BUFFERS,  <span class="n">0</span>,  ALLEGRO_REQUIRE<span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span>  <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_SAMPLE_BUFFERS,  <span class="n">1</span>,  ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span>  <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_SAMPLES,  <span class="n">4</span>,  ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</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>scrW, scrH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span>  <span class="k1">if</span> <span class="k2">(</span>display <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  44</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: Failed to create Display.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  45</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  46</span>  <span class="k2">}</span>
<span class="number">  47</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Successfully created the display.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  48</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_display_flags"><span class="a">al_get_display_flags</span></a><span class="k2">(</span>display<span class="k2">)</span> ^ ALLEGRO_OPENGL_3_0<span class="k2">)</span> <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  49</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: Could not get an OpenGL 3.x display.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  50</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  51</span>  <span class="k2">}</span>
<span class="number">  52</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"OpenGL 3.x capable display detected.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  53</span>  <a href="http://www.allegro.cc/manual/al_set_current_opengl_context"><span class="a">al_set_current_opengl_context</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number">  54</span>  initGL<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  55</span>  
<span class="number">  56</span>  timer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0</span> <span class="k3">/</span> FPS<span class="k2">)</span><span class="k2">;</span>
<span class="number">  57</span>  event_queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  58</span>  <span class="k1">if</span> <span class="k2">(</span>event_queue <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  59</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: Failed to create Event Queue.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  60</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  61</span>  <span class="k2">}</span>
<span class="number">  62</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  66</span>  
<span class="number">  67</span>  <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  68</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number">  69</span>    
<span class="number">  70</span>    <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  71</span>      redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  72</span>    <span class="k2">}</span>
<span class="number">  73</span>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_KEY_DOWN<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  74</span>      <span class="k1">if</span> <span class="k2">(</span>event.keyboard.keycode <span class="k3">=</span><span class="k3">=</span> ALLEGRO_KEY_ESCAPE<span class="k2">)</span> done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  75</span>    <span class="k2">}</span>
<span class="number">  76</span>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_RESIZE<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  77</span>      <span class="k1">if</span> <span class="k2">(</span><a href="http://www.allegro.cc/manual/al_acknowledge_resize"><span class="a">al_acknowledge_resize</span></a><span class="k2">(</span>event.display.source<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  78</span>        scrW <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_width"><span class="a">al_get_display_width</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>        scrH <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_display_height"><span class="a">al_get_display_height</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number">  80</span>      <span class="k2">}</span>
<span class="number">  81</span>      <span class="k1">else</span> <span class="k2">{</span>
<span class="number">  82</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"WARNING: Failed to resize display.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  83</span>      <span class="k2">}</span>
<span class="number">  84</span>    <span class="k2">}</span>
<span class="number">  85</span>    <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span>event.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_DISPLAY_CLOSE<span class="k2">)</span> <span class="k2">{</span>
<span class="number">  86</span>      done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  87</span>    <span class="k2">}</span>
<span class="number">  88</span>    <span class="k1">if</span> <span class="k2">(</span>redraw <span class="k3">=</span><span class="k3">=</span> <span class="k1">true</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <a href="http://www.allegro.cc/manual/al_is_event_queue_empty"><span class="a">al_is_event_queue_empty</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number">  89</span>      glClear<span class="k2">(</span>GL_COLOR_BUFFER_BIT <span class="k3">|</span> GL_DEPTH_BUFFER_BIT <span class="k3">|</span> GL_STENCIL_BUFFER_BIT<span class="k2">)</span><span class="k2">;</span>
<span class="number">  90</span>      glViewport<span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,scrW,scrH<span class="k2">)</span><span class="k2">;</span>
<span class="number">  91</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">  92</span>      redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  93</span>    <span class="k2">}</span>
<span class="number">  94</span>  <span class="k2">}</span>
<span class="number">  95</span>  
<span class="number">  96</span>  <a href="http://www.allegro.cc/manual/al_destroy_timer"><span class="a">al_destroy_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number">  97</span>  <a href="http://www.allegro.cc/manual/al_destroy_event_queue"><span class="a">al_destroy_event_queue</span></a><span class="k2">(</span>event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number">  98</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">  99</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 100</span><span class="k2">}</span>
<span class="number"> 101</span>
<span class="number"> 102</span><span class="k1">bool</span> initAL<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 103</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="k2">{</span>
<span class="number"> 104</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: Allegro failed to initialize.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 105</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 106</span>  <span class="k2">}</span>
<span class="number"> 107</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</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="k2">{</span>
<span class="number"> 108</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: Failed to install Allegro Keyboard.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 109</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 110</span>  <span class="k2">}</span>
<span class="number"> 111</span>  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 112</span><span class="k2">}</span>
<span class="number"> 113</span>
<span class="number"> 114</span><span class="k1">void</span> initGL<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 115</span>  glClearColor<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="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"> 116</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (chex_5)</author>
		<pubDate>Thu, 12 Apr 2012 10:43:49 +0000</pubDate>
	</item>
</rss>
