<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>too slow.</title>
		<link>http://www.allegro.cc/forums/view/607451</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 28 May 2011 03:47:26 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi there! I&#39;m trying to implement bloom effect w/o shaders and proceed to use allegro+ogl to archive this. As i read in someplaces i need to render my scene to a texture and apply some blur and stuff. The problem is that when i copy the backbuffer to another BITMAP it&#39;s taking a LOT of time. Is anything very wrong in my code or my computer is very bad on this?</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;stdio.h&gt;</span>
<span class="number">   2</span>
<span class="number">   3</span><span class="p">#include "allegro5/allegro.h"</span>
<span class="number">   4</span><span class="p">#include "allegro5/allegro_image.h"</span>
<span class="number">   5</span><span class="p">#include "allegro5/allegro_opengl.h"</span>
<span class="number">   6</span><span class="p">#include "allegro5/allegro_font.h"</span>
<span class="number">   7</span><span class="p">#include "allegro5/allegro_primitives.h"</span>
<span class="number">   8</span>
<span class="number">   9</span><span class="p">#include &lt;GL/glu.h&gt;</span>
<span class="number">  10</span>
<span class="number">  11</span><span class="p">#include "common.c"</span>
<span class="number">  12</span>
<span class="number">  13</span><span class="k1">struct</span> camera <span class="k2">{</span>
<span class="number">  14</span>   <span class="k1">double</span> xangle, yangle, zangle<span class="k2">;</span>
<span class="number">  15</span>   <span class="k1">double</span> dist<span class="k2">;</span>
<span class="number">  16</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  17</span>
<span class="number">  18</span><span class="k1">struct</span> camera camera <span class="k3">=</span> <span class="k2">{</span>
<span class="number">  19</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="n">0</span>,
<span class="number">  20</span>   <span class="n">20</span>.<span class="n">0</span>
<span class="number">  21</span><span class="k2">}</span><span class="k2">;</span>
<span class="number">  22</span>
<span class="number">  23</span><span class="k1">double</span> angle_speed <span class="k3">=</span> <span class="n">5</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  24</span><span class="k1">double</span> dist_speed <span class="k3">=</span> <span class="n">1</span>.<span class="n">0</span><span class="k2">;</span>
<span class="number">  25</span>
<span class="number">  26</span>GLuint tex<span class="k2">;</span>
<span class="number">  27</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>bmp,<span class="k3">*</span>buffer<span class="k2">;</span>
<span class="number">  28</span><span class="k1">bool</span> <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_MAX<span class="k2">]</span><span class="k2">;</span>
<span class="number">  29</span>
<span class="number">  30</span>GLUquadricObj <span class="k3">*</span> quadratic<span class="k2">;</span>  
<span class="number">  31</span>
<span class="number">  32</span><span class="k1">static</span> <span class="k1">void</span> set_camera_position<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  33</span><span class="k2">{</span>
<span class="number">  34</span>   glMatrixMode<span class="k2">(</span>GL_PROJECTION<span class="k2">)</span><span class="k2">;</span>
<span class="number">  35</span>   glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  36</span>   <span class="c">//glFrustum(-1.0, 1.0, -1.0, 1.0, 1.0, 90.0);</span>
<span class="number">  37</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><span class="n">1024</span>.<span class="n">0</span><span class="k3">/</span><span class="k2">(</span>GLfloat<span class="k2">)</span><span class="n">768</span>.<span class="n">0</span>,<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">  38</span>   glTranslatef<span class="k2">(</span><span class="n">0</span>, <span class="n">0</span>, <span class="k3">-</span>camera.dist<span class="k2">)</span><span class="k2">;</span>
<span class="number">  39</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">  40</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">  41</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">  42</span>   glMatrixMode<span class="k2">(</span>GL_MODELVIEW<span class="k2">)</span><span class="k2">;</span>
<span class="number">  43</span><span class="k2">}</span>
<span class="number">  44</span>
<span class="number">  45</span>
<span class="number">  46</span>
<span class="number">  47</span><span class="k1">static</span> <span class="k1">void</span> keyboard<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  48</span><span class="k2">{</span>
<span class="number">  49</span>   <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_LEFT<span class="k2">]</span><span class="k2">)</span>  camera.yangle <span class="k3">+</span><span class="k3">=</span> angle_speed<span class="k2">;</span>
<span class="number">  50</span>   <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_RIGHT<span class="k2">]</span><span class="k2">)</span> camera.yangle <span class="k3">-</span><span class="k3">=</span> angle_speed<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/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_UP<span class="k2">]</span><span class="k2">)</span>   camera.xangle <span class="k3">+</span><span class="k3">=</span> angle_speed<span class="k2">;</span>
<span class="number">  53</span>   <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_DOWN<span class="k2">]</span><span class="k2">)</span> camera.xangle <span class="k3">-</span><span class="k3">=</span> angle_speed<span class="k2">;</span>
<span class="number">  54</span>
<span class="number">  55</span>   <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_PGUP<span class="k2">]</span><span class="k2">)</span> camera.dist <span class="k3">-</span><span class="k3">=</span> dist_speed<span class="k2">;</span>
<span class="number">  56</span>   <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>ALLEGRO_KEY_PGDN<span class="k2">]</span><span class="k2">)</span> camera.dist <span class="k3">+</span><span class="k3">=</span> dist_speed<span class="k2">;</span>
<span class="number">  57</span><span class="k2">}</span>
<span class="number">  58</span>
<span class="number">  59</span>
<span class="number">  60</span><span class="k1">static</span> <span class="k1">void</span> draw<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  61</span><span class="k2">{</span>
<span class="number">  62</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">  63</span>
<span class="number">  64</span>    glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  65</span>
<span class="number">  66</span>    glBindTexture<span class="k2">(</span>GL_TEXTURE_2D, tex<span class="k2">)</span><span class="k2">;</span>
<span class="number">  67</span>
<span class="number">  68</span>    glRotatef<span class="k2">(</span><span class="n">45</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">0</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  69</span>    glTranslatef<span class="k2">(</span><span class="n">14</span>.<span class="n">0f</span>,<span class="n">8</span>.<span class="n">0f</span>,<span class="n">0</span>.<span class="n">0f</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  70</span>
<span class="number">  71</span>    gluSphere<span class="k2">(</span>quadratic,<span class="n">3</span>.f,<span class="n">64</span>,<span class="n">64</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  72</span><span class="k2">}</span>
<span class="number">  73</span>
<span class="number">  74</span><span class="k1">static</span> <span class="k1">void</span> map<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number">  75</span><span class="k2">{</span>
<span class="number">  76</span>    glMatrixMode<span class="k2">(</span>GL_PROJECTION<span class="k2">)</span><span class="k2">;</span>
<span class="number">  77</span>    glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  78</span>    glOrtho<span class="k2">(</span><span class="n">0</span>.<span class="n">0f</span>, <span class="n">1024</span> <span class="k3">-</span> <span class="n">1</span>.<span class="n">0</span>, <span class="n">768</span> <span class="k3">-</span> <span class="n">1</span>.<span class="n">0</span>, <span class="n">0</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="k2">)</span><span class="k2">;</span>
<span class="number">  79</span>    glMatrixMode<span class="k2">(</span>GL_MODELVIEW<span class="k2">)</span><span class="k2">;</span>
<span class="number">  80</span>    glLoadIdentity<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  81</span>  
<span class="number">  82</span>    <a href="http://www.allegro.cc/manual/al_draw_filled_rectangle"><span class="a">al_draw_filled_rectangle</span></a><span class="k2">(</span><span class="n">0</span>, <span class="n">640</span>, <span class="n">1024</span>, <span class="n">768</span>, <a href="http://www.allegro.cc/manual/al_map_rgba_f"><span class="a">al_map_rgba_f</span></a><span class="k2">(</span><span class="n">1</span>,<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="k2">;</span>
<span class="number">  83</span><span class="k2">}</span>
<span class="number">  84</span>
<span class="number">  85</span><span class="k1">static</span> <span class="k1">void</span> setup_textures<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">)</span>
<span class="number">  86</span><span class="k2">{</span>
<span class="number">  87</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>tmp_bmp<span class="k2">;</span>
<span class="number">  88</span><span class="c">//   ALLEGRO_FONT *font;</span>
<span class="number">  89</span>   <span class="k1">int</span> w, h<span class="k2">;</span><span class="c">//, depth;</span>
<span class="number">  90</span>
<span class="number">  91</span><span class="c">//   font = al_load_font("data/fixed_font.tga", 0, 0);</span>
<span class="number">  92</span><span class="c">//   if(!font) {</span>
<span class="number">  93</span><span class="c">//      abort_example("Error loading `data/fixed_font.tga'\n");</span>
<span class="number">  94</span><span class="c">//      exit(1);</span>
<span class="number">  95</span><span class="c">//   }</span>
<span class="number">  96</span>
<span class="number">  97</span>   glViewport<span class="k2">(</span><span class="n">0</span>,<span class="n">0</span>,<span class="n">1024</span>,<span class="n">768</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  98</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><span class="n">1024</span>.<span class="n">0</span><span class="k3">/</span><span class="k2">(</span>GLfloat<span class="k2">)</span><span class="n">768</span>.<span class="n">0</span>,<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">  99</span>   
<span class="number"> 100</span>   tmp_bmp <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"data/moon.bmp"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>tmp_bmp<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 102</span>      abort_example<span class="k2">(</span><span class="s">"Error loading `data/moon.bmp'\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 103</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 104</span>   <span class="k2">}</span>
<span class="number"> 105</span>
<span class="number"> 106</span>   w <span class="k3">=</span> <span class="n">512</span><span class="k2">;</span>
<span class="number"> 107</span>   h <span class="k3">=</span> <span class="n">512</span><span class="k2">;</span>
<span class="number"> 108</span>   bmp <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span>w, h<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 109</span>
<span class="number"> 110</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>ALLEGRO_VIDEO_BITMAP<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 111</span>   buffer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_bitmap"><span class="a">al_create_bitmap</span></a><span class="k2">(</span><span class="n">1024</span>, <span class="n">1024</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 112</span>   
<span class="number"> 113</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>bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 114</span>   <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>tmp_bmp,<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"> 115</span>
<span class="number"> 116</span><span class="c">//   depth = al_get_display_option(display, ALLEGRO_DEPTH_SIZE);</span>
<span class="number"> 117</span><span class="c">//   if (!depth)</span>
<span class="number"> 118</span><span class="c">//      al_draw_textf(font, al_map_rgb(255, 0, 0), 0, 5, 0, "No Z-buffer!");</span>
<span class="number"> 119</span><span class="c">//   else</span>
<span class="number"> 120</span><span class="c">//      al_draw_textf(font, al_map_rgb(255, 0, 0), 0, 5, 0, "Z-buffer: %i bits", depth);</span>
<span class="number"> 121</span>
<span class="number"> 122</span>   <a href="http://www.allegro.cc/manual/al_set_target_backbuffer"><span class="a">al_set_target_backbuffer</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 123</span>   <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>tmp_bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 124</span>
<span class="number"> 125</span><span class="c">//   al_destroy_font(font);</span>
<span class="number"> 126</span>
<span class="number"> 127</span>   glShadeModel<span class="k2">(</span>GL_SMOOTH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 128</span>
<span class="number"> 129</span>   glEnable<span class="k2">(</span>GL_TEXTURE_2D<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 130</span>   glTexEnvi<span class="k2">(</span>GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 131</span>
<span class="number"> 132</span>   tex <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_opengl_texture"><span class="a">al_get_opengl_texture</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 133</span>   
<span class="number"> 134</span>   quadratic<span class="k3">=</span>gluNewQuadric<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 135</span>   gluQuadricNormals<span class="k2">(</span>quadratic, GLU_SMOOTH<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 136</span>   gluQuadricTexture<span class="k2">(</span>quadratic, GL_TRUE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 137</span><span class="k2">}</span>
<span class="number"> 138</span>
<span class="number"> 139</span>
<span class="number"> 140</span>
<span class="number"> 141</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span>
<span class="number"> 142</span><span class="k2">{</span>
<span class="number"> 143</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">;</span>
<span class="number"> 144</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>queue<span class="k2">;</span>
<span class="number"> 145</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer<span class="k2">;</span>
<span class="number"> 146</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"> 147</span>
<span class="number"> 148</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"> 149</span>      abort_example<span class="k2">(</span><span class="s">"Could not init Allegro.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 150</span>      <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 151</span>   <span class="k2">}</span>
<span class="number"> 152</span>
<span class="number"> 153</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"> 154</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"> 155</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"> 156</span>   
<span class="number"> 157</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"> 158</span>
<span class="number"> 159</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"> 160</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">16</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 161</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">1024</span>, <span class="n">768</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 162</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 163</span>      abort_example<span class="k2">(</span><span class="s">"Could not create display.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 164</span>   <span class="k2">}</span>
<span class="number"> 165</span>
<span class="number"> 166</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="k3">/</span> <span class="n">60</span>.<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 167</span>
<span class="number"> 168</span>   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"> 169</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>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"> 170</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>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"> 171</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>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"> 172</span>
<span class="number"> 173</span>   glEnable<span class="k2">(</span>GL_DEPTH_TEST<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 174</span>   <span class="c">///glDisable(GL_CULL_FACE);</span>
<span class="number"> 175</span>
<span class="number"> 176</span><span class="c">//   printf("%s\n",glGetString(GL_EXTENSIONS));</span>
<span class="number"> 177</span>   
<span class="number"> 178</span>   setup_textures<span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 179</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"> 180</span><span class="k1">int</span> test <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span>
<span class="number"> 181</span>   <span class="k1">while</span><span class="k2">(</span><span class="k1">true</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 182</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>queue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 183</span>      <span class="k1">switch</span><span class="k2">(</span>event.type<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 184</span>         <span class="k1">case</span> ALLEGRO_EVENT_DISPLAY_CLOSE:
<span class="number"> 185</span>            <span class="k1">goto</span> done<span class="k2">;</span>
<span class="number"> 186</span>
<span class="number"> 187</span>         <span class="k1">case</span> ALLEGRO_EVENT_KEY_DOWN:
<span class="number"> 188</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="number"> 189</span>               <span class="k1">goto</span> done<span class="k2">;</span>
<span class="number"> 190</span>            <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>event.keyboard.keycode<span class="k2">]</span> <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 191</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 192</span>         
<span class="number"> 193</span>         <span class="k1">case</span> ALLEGRO_EVENT_KEY_UP:
<span class="number"> 194</span>            <a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>event.keyboard.keycode<span class="k2">]</span> <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 195</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 196</span>
<span class="number"> 197</span>         <span class="k1">case</span> ALLEGRO_EVENT_TIMER:
<span class="number"> 198</span>            keyboard<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 199</span>            <span class="k1">if</span><span class="k2">(</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>queue<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 200</span>               set_camera_position<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 201</span>               draw<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 202</span>               glDisable<span class="k2">(</span>GL_DEPTH_TEST<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 203</span>               map<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 204</span>               glEnable<span class="k2">(</span>GL_DEPTH_TEST<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 205</span>
<span class="number"> 206</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>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 207</span>               <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_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="n">0</span>, <span class="n">0</span>, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 208</span>               <a href="http://www.allegro.cc/manual/al_set_target_backbuffer"><span class="a">al_set_target_backbuffer</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 209</span>
<span class="number"> 210</span>               <span class="c">//printf("teste\n");</span>
<span class="number"> 211</span>               <span class="c">//if (test){al_save_bitmap("./saveme.png", buffer);test=0;}</span>
<span class="number"> 212</span>
<span class="number"> 213</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"> 214</span>            <span class="k2">}</span>
<span class="number"> 215</span>            <span class="k1">break</span><span class="k2">;</span>
<span class="number"> 216</span>      <span class="k2">}</span>
<span class="number"> 217</span>   <span class="k2">}</span>
<span class="number"> 218</span>
<span class="number"> 219</span>done:
<span class="number"> 220</span>   <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>bmp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 221</span>
<span class="number"> 222</span>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 223</span><span class="k2">}</span>
</div></div><p>

Yes, i use the ex_gldepth as my base code <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>Thanks all!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (killocan)</author>
		<pubDate>Fri, 27 May 2011 23:58:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Did you know if you call</p><p>al_set_target_bitmap() before ogl calls the opengl commands will get drawn on the target bitmap...  ?</p><p>ie - you don&#39;t have to render to the backbuffer.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (William Labbett)</author>
		<pubDate>Sat, 28 May 2011 02:24:37 +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/607451/919173#target">killocan</a> said:</div><div class="quote"><p>Hi there! I&#39;m trying to implement bloom effect w/o shaders</p></div></div><p>
Then it&#39;s going to be slow, no matter what you do. <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /><br />Why are you even attempting it? This is a problem that GPUs <i>are built to solve</i>.
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>The problem is that when i copy the backbuffer to another BITMAP it&#39;s taking a LOT of time.</p></div></div><p>
And reading back data from video memory is <i>also</i> slow.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (gnolam)</author>
		<pubDate>Sat, 28 May 2011 02:45:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ugh.  I hate bloom.  People use it like McDonald&#39;s uses salt. <img src="http://www.allegro.cc/forums/smileys/angry.gif" alt="&gt;:(" /></p><p>It&#39;s right up there next to the <a href="http://www.allegro.cc/files/attachment/604182"> programmer&#39;s idea of a color palette</a>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Sat, 28 May 2011 03:47:26 +0000</pubDate>
	</item>
</rss>
