<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>DirectX backbuffer copy in 5.0.6</title>
		<link>http://www.allegro.cc/forums/view/609719</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 12 Mar 2012 14:11:39 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi, I tried the 5.0.6 changes that were made based on this <a href="http://www.allegro.cc/forums/thread/609560">thread</a>. But there&#39;s yet another problem...</p><p>It seems that DX version set&#39;s a an alpha channel to some strange, when copying backbuffer to a bitmap.</p><p>I have a problem with openGL as well so I attach three images.</p><p><span class="remote-thumbnail"><span class="json">{"name":"605733","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/b\/e\/be6938800620ae639c83667e508258b6.png","w":442,"h":162,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/b\/e\/be6938800620ae639c83667e508258b6"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/b/e/be6938800620ae639c83667e508258b6-240.jpg" alt="605733" width="240" height="87" /></span><br /><span class="remote-thumbnail"><span class="json">{"name":"605734","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/9\/c\/9c3f6c1ef5871872f60d2274681b1f8f.png","w":442,"h":162,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/9\/c\/9c3f6c1ef5871872f60d2274681b1f8f"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/9/c/9c3f6c1ef5871872f60d2274681b1f8f-240.jpg" alt="605734" width="240" height="87" /></span><br /><span class="remote-thumbnail"><span class="json">{"name":"605735","src":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/5\/f\/5f496b018d569ddf0015d9dbcb4f5ffc.png","w":442,"h":162,"tn":"\/\/djungxnpq2nug.cloudfront.net\/image\/cache\/5\/f\/5f496b018d569ddf0015d9dbcb4f5ffc"}</span><img src="http://www.allegro.cc//djungxnpq2nug.cloudfront.net/image/cache/5/f/5f496b018d569ddf0015d9dbcb4f5ffc-240.jpg" alt="605735" width="240" height="87" /></span></p><p>First one is rendered using DirectX and is rendered to backbuffer and then copied out of to a bitmap and than from the bitmap back to backbuffer (which is than flipped and thus shown on the screen).</p><p>Second one is rendered the same way as the first one, but using openGL.</p><p>Third one is rendered directly to backbuffer, wich is then flipped and shown on screen (normal rendering).</p><p>The image consist of black background with the reflection effect and vertical and horizontal guidelines. On top of it there&#39;s some function rendered using multiple calls to al_draw_line.</p><p>What I would actually like to accomplish is, of course, to make the first two images look exactly the same as the third one...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (APrince)</author>
		<pubDate>Thu, 08 Mar 2012 20:05:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Is the third one rendered with OpenGL or DirectX?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Elias)</author>
		<pubDate>Thu, 08 Mar 2012 22:57:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Please paste a small test case.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Fri, 09 Mar 2012 00:20:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Sorry for the late answer, for a few days I didn&#39;t have a luxury of internet connection...</p><p>Anyway I did some testing and dug up this:</p><p>1) Simple example could be ANYTHING that draws any multisampled lines. For example:</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;iostream&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;vector&gt;</span>
<span class="number">  3</span><span class="p">#include "Allegro5/allegro.h"</span>
<span class="number">  4</span><span class="p">#include &lt;allegro5/allegro_image.h&gt;</span>
<span class="number">  5</span><span class="p">#include &lt;allegro5/allegro_primitives.h&gt;</span>
<span class="number">  6</span><span class="p">#include &lt;allegro5/allegro_font.h&gt;</span>
<span class="number">  7</span><span class="p">#include &lt;allegro5/allegro_ttf.h&gt;</span>
<span class="number">  8</span>
<span class="number">  9</span><span class="k1">bool</span> as_al_init<span class="k2">(</span><span class="k1">int</span> display_width, <span class="k1">int</span> display_height, <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span><span class="k3">*</span> display, <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a><span class="k3">*</span><span class="k3">*</span> event_queue<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 10</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"> 11</span>    std::cerr <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to initialize allegro!"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 12</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 13</span>  <span class="k2">}</span>
<span class="number"> 14</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</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="k2">{</span>
<span class="number"> 15</span>    std::cerr <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to install mouse!"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 16</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 17</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>    std::cerr <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to install keyboard!"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 20</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 21</span>  <span class="k2">}</span>
<span class="number"> 22</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>display<span class="k2">)</span> <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 23</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"> 24</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"> 25</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">8</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</span><span class="k3">*</span>display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span>display_width,display_height<span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 27</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 28</span>  <span class="k2">}</span>
<span class="number"> 29</span>
<span class="number"> 30</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>event_queue<span class="k2">)</span> <span class="k2">{</span><a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span><span class="k3">*</span>display<span class="k2">)</span><span class="k2">;</span> <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 31</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</span><span class="k3">*</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="k2">)</span><span class="k2">{</span>
<span class="number"> 32</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span><span class="k3">*</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span>    std::cerr <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to create event queue!"</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 34</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 35</span>  <span class="k2">}</span>
<span class="number"> 36</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</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="k2">)</span><span class="k2">{</span>
<span class="number"> 37</span>    std::cerr <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to initialize image addon."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 38</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span><span class="k3">*</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 40</span>  <span class="k2">}</span>
<span class="number"> 41</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span><span class="k2">(</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="k2">)</span><span class="k2">{</span>
<span class="number"> 42</span>    std::cerr <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Failed to initialize primitives addon."</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span>
<span class="number"> 43</span>    <a href="http://www.allegro.cc/manual/al_destroy_display"><span class="a">al_destroy_display</span></a><span class="k2">(</span><span class="k3">*</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 44</span>    <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 45</span>  <span class="k2">}</span>  
<span class="number"> 46</span>
<span class="number"> 47</span>  <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 48</span><span class="k2">}</span>
<span class="number"> 49</span>
<span class="number"> 50</span><span class="k1">void</span> as_al_cleanUp<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, <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="k2">)</span><span class="k2">{</span>  
<span class="number"> 51</span>  <span class="k1">if</span> <span class="k2">(</span>event_queue<span class="k2">)</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"> 52</span>  <span class="k1">if</span> <span class="k2">(</span>display<span class="k2">)</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"> 53</span>  
<span class="number"> 54</span>  <a href="http://www.allegro.cc/manual/al_shutdown_primitives_addon"><span class="a">al_shutdown_primitives_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 55</span>  <a href="http://www.allegro.cc/manual/al_shutdown_image_addon"><span class="a">al_shutdown_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  
<span class="number"> 56</span>  <a href="http://www.allegro.cc/manual/al_uninstall_keyboard"><span class="a">al_uninstall_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 57</span>  <a href="http://www.allegro.cc/manual/al_uninstall_mouse"><span class="a">al_uninstall_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>  <a href="http://www.allegro.cc/manual/al_uninstall_system"><span class="a">al_uninstall_system</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//all allegro shutdowns have to go before this one...</span>
<span class="number"> 59</span><span class="k2">}</span>
<span class="number"> 60</span>
<span class="number"> 61</span>
<span class="number"> 62</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span><span class="k3">*</span> argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span>
<span class="number"> 63</span><span class="k2">{</span>
<span class="number"> 64</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"> 65</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"> 66</span>
<span class="number"> 67</span>  <span class="k1">if</span> <span class="k2">(</span><span class="k3">!</span>as_al_init<span class="k2">(</span><span class="n">640</span>, <span class="n">480</span>, <span class="k3">&amp;</span>display, <span class="k3">&amp;</span>event_queue<span class="k2">)</span><span class="k2">)</span> <span class="k1">return</span> <span class="n">1</span><span class="k2">;</span>      
<span class="number"> 68</span>
<span class="number"> 69</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"> 70</span>  <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">210</span>, <span class="n">210</span>, <span class="n">250</span>, <span class="n">250</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">25</span>,<span class="n">136</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 71</span>  <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">250</span>, <span class="n">250</span>, <span class="n">280</span>, <span class="n">210</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">25</span>,<span class="n">136</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 72</span>  <a href="http://www.allegro.cc/manual/al_draw_line"><span class="a">al_draw_line</span></a><span class="k2">(</span><span class="n">280</span>, <span class="n">210</span>, <span class="n">310</span>, <span class="n">250</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">25</span>,<span class="n">136</span>,<span class="n">200</span><span class="k2">)</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 73</span>  
<span class="number"> 74</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> backbufferImage <span class="k3">=</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="number"> 75</span>  
<span class="number"> 76</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> image <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">400</span>,<span class="n">60</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 77</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span> currentDisplay <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_current_display"><span class="a">al_get_current_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 78</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>image<span class="k2">)</span><span class="k2">;</span>  
<span class="number"> 79</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">255</span>,<span class="n">255</span>,<span class="n">255</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 80</span>  <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>backbufferImage, <span class="n">200</span>, <span class="n">200</span>, <span class="n">400</span>, <span class="n">60</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"> 81</span>  
<span class="number"> 82</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>currentDisplay<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 83</span>
<span class="number"> 84</span>  <a href="http://www.allegro.cc/manual/al_draw_bitmap"><span class="a">al_draw_bitmap</span></a><span class="k2">(</span>image, <span class="n">200</span>,<span class="n">140</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 85</span>
<span class="number"> 86</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"> 87</span>
<span class="number"> 88</span>  Sleep<span class="k2">(</span><span class="n">15000</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 89</span>
<span class="number"> 90</span>  as_al_cleanUp<span class="k2">(</span>display, event_queue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 91</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 92</span><span class="k2">}</span>
</div></div><p>

2) The DirectX problem was caused by this fact:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k1">class</span> AAllegroBackbufferRegionGetter <span class="k2">:</span> <span class="k1">public</span> ABackbufferRegionGetter<span class="k2">{</span>
<span class="number">  2</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">  3</span>public:
<span class="number">  4</span>  AAllegroBackbufferRegionGetter<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="k2">:</span> display<span class="k2">(</span>display<span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>
<span class="number">  5</span>  <span class="k1">virtual</span> <span class="k1">void</span> getRegion<span class="k2">(</span>AImage<span class="k3">&amp;</span> storeTo, <span class="k1">const</span> ARectangle<span class="k3">&lt;</span>size_t&gt;<span class="k3">&amp;</span> region<span class="k2">)</span><span class="k2">{</span>
<span class="number">  6</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> backbufferImage <span class="k3">=</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="number">  7</span>    <span class="k1">if</span> <span class="k2">(</span>storeTo.getSize<span class="k2">(</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> region.size<span class="k2">)</span><span class="k2">{</span>
<span class="number">  8</span>      storeTo.setSize<span class="k2">(</span>region.size<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>    <span class="k2">}</span>
<span class="number"> 10</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> image <span class="k3">=</span> <span class="k1">static_cast</span><span class="k3">&lt;</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span><span class="k3">&gt;</span> <span class="k2">(</span>storeTo.getRepresentedObject<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a><span class="k3">*</span> currentDisplay <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_get_current_display"><span class="a">al_get_current_display</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_set_target_bitmap"><span class="a">al_set_target_bitmap</span></a><span class="k2">(</span>image<span class="k2">)</span><span class="k2">;</span>    
<span class="number"> 13</span>    <span class="c">//al_clear_to_color(al_map_rgba(0,0,0,255));</span>
<span class="number"> 14</span>    <span class="c">//int op, src, dst; al_get_blender(&amp;op, &amp;src, &amp;dst);</span>
<span class="number"> 15</span>    <span class="c">//al_set_separate_blender(ALLEGRO_ADD, ALLEGRO_ONE, ALLEGRO_ZERO, ALLEGRO_ADD, ALLEGRO_ZERO, ALLEGRO_ONE);</span>
<span class="number"> 16</span>    <a href="http://www.allegro.cc/manual/al_draw_bitmap_region"><span class="a">al_draw_bitmap_region</span></a><span class="k2">(</span>backbufferImage, region.origin.x, region.origin.y, region.size.x, region.size.y, <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"> 17</span>    <span class="c">//al_set_blender(op, src, dst);    </span>
<span class="number"> 18</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>currentDisplay<span class="k2">)</span><span class="k2">;</span>    
<span class="number"> 19</span>  <span class="k2">}</span>
<span class="number"> 20</span><span class="k2">}</span><span class="k2">;</span>
</div></div><p>

When I comment out those blender lines it works fine for DirectX. That means the result is identical to the image drawn to backbuffer and it even does not have the degradation as OpenGL version. The reason I included those lines was to ensure that I do not copy the alpha channel as well (for I need to have the image 100% opaque). I don&#39;t how the transparency behaves when copying, so this was my idea how to solve this (not very smart - obviously).</p><p>Anyway it is strange, that setting the blender as above, does not have any impact on OpenGL rendering... I think it should behave the same way...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (APrince)</author>
		<pubDate>Mon, 12 Mar 2012 14:11:39 +0000</pubDate>
	</item>
</rss>
