<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Scaling down runtime created bitmaps makes them transparent</title>
		<link>http://www.allegro.cc/forums/view/617574</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 14 Oct 2018 23:25:48 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi everybody, it&#39;s me again with another question.</p><p>In my spare time, I like to write little pieces of code that could help me in the future, this time I was working on a &quot;vertical game renderer&quot; (I made this thing), you might be asking &quot;what the hell is that?&quot; well, a little time ago I played &quot;Bird climb&quot; (a game that&#39;s available on the Microsoft store) on my pc and noticed something really cool, despite that the game is in portrait mode (cause it was first made for mobile phones), the developers found a cool workaround to play this gem on landscape mode, and this by just adding bars to the sides of the game itself but that&#39;s not the cool part, the cool part is that you can scale the window and the game scales keeping its aspect ratio, ok I&#39;m not explaining my self as I would like to, take a look at the attachments.</p><p>my idea to recreate this is to create a bitmap, render everything there and then render this bitmap scaled in the middle of the window, this seemed fine until I realized that if I create a bitmap with higher resolutions (for scale purposes)and then scale this bitmap down to fit the screen, the bitmap (let&#39;s call this &quot;game buffer&quot;)for some reason turns transparent.</p><p>here is my code</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="c">//-----------------------------------Main.cpp-----------------------------------</span>
<span class="number">   2</span><span class="p">#define ALLEGRO_UNSTABLE</span>
<span class="number">   3</span>
<span class="number">   4</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">   5</span>
<span class="number">   6</span>
<span class="number">   7</span><span class="c">//-----------------------------function declaration----------------------------</span>
<span class="number">   8</span><span class="k1">void</span> draw_to_gameBuffer<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>gameBuffer, <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>
<span class="number">   9</span><span class="c">//---------------------------function declaration END--------------------------</span>
<span class="number">  10</span>
<span class="number">  11</span>
<span class="number">  12</span><span class="c">//*****************************************************************************</span>
<span class="number">  13</span><span class="c">//----------------------------------MAIN---------------------------------------</span>
<span class="number">  14</span><span class="c">//*****************************************************************************</span>
<span class="number">  15</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  16</span><span class="k2">{</span>
<span class="number">  17</span>  <span class="k1">bool</span> done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  18</span>  <span class="k1">bool</span> redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  19</span>
<span class="number">  20</span>  <span class="c">//----------------------------Screen settings-----------------------------</span>
<span class="number">  21</span>  <span class="k1">static</span> <span class="k1">int</span> WIDTH <span class="k3">=</span> <span class="n">1280</span><span class="k2">;</span>
<span class="number">  22</span>  <span class="k1">static</span> <span class="k1">int</span> HEIGHT <span class="k3">=</span> <span class="n">720</span><span class="k2">;</span>
<span class="number">  23</span>
<span class="number">  24</span>  <span class="k1">static</span> <span class="k1">int</span> MIN_WIDTH <span class="k3">=</span> <span class="n">405</span><span class="k2">;</span>
<span class="number">  25</span>  <span class="k1">static</span> <span class="k1">int</span> MIN_HEIGHT <span class="k3">=</span> <span class="n">720</span><span class="k2">;</span>
<span class="number">  26</span>
<span class="number">  27</span>  <span class="k1">static</span> <span class="k1">int</span> gameBufferWidth <span class="k3">=</span> <span class="n">720</span><span class="k2">;</span>
<span class="number">  28</span>  <span class="k1">static</span> <span class="k1">int</span> gameBufferHeight <span class="k3">=</span> <span class="n">1280</span><span class="k2">;</span>
<span class="number">  29</span>
<span class="number">  30</span>  <span class="k1">static</span> <span class="k1">int</span> gameBufferWidthScaled <span class="k3">=</span> <span class="n">405</span><span class="k2">;</span>
<span class="number">  31</span>  <span class="k1">static</span> <span class="k1">int</span> gameBufferHeightScaled <span class="k3">=</span> <span class="n">720</span><span class="k2">;</span>
<span class="number">  32</span>
<span class="number">  33</span>  <span class="k1">float</span> gameBufferX <span class="k3">=</span> <span class="k2">(</span>WIDTH <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>gameBufferWidthScaled <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  34</span>  <span class="k1">float</span> gameBufferY <span class="k3">=</span> <span class="k2">(</span>HEIGHT <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>gameBufferHeightScaled <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span><span class="k2">;</span>
<span class="number">  35</span>
<span class="number">  36</span>  <span class="k1">static</span> <span class="k1">float</span> FPS <span class="k3">=</span> <span class="n">60</span><span class="k2">;</span>
<span class="number">  37</span>  <span class="c">//--------------------------Screen settings END---------------------------</span>
<span class="number">  38</span>
<span class="number">  39</span>
<span class="number">  40</span>  <span class="c">//--------------------------Pointers declaration--------------------------</span>
<span class="number">  41</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> nullptr<span class="k2">;</span>
<span class="number">  42</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>eventQueue <span class="k3">=</span> nullptr<span class="k2">;</span>
<span class="number">  43</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> nullptr<span class="k2">;</span>
<span class="number">  44</span>
<span class="number">  45</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>gameBuffer <span class="k3">=</span> nullptr<span class="k2">;</span>
<span class="number">  46</span>  <span class="c">//------------------------Pointers declaration END------------------------</span>
<span class="number">  47</span>
<span class="number">  48</span>
<span class="number">  49</span>  <span class="c">//--------------------------Initialize elements---------------------------</span>
<span class="number">  50</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  51</span>  <span class="c">//------------------------Initialize elements END-------------------------</span>
<span class="number">  52</span>
<span class="number">  53</span>
<span class="number">  54</span>  <span class="c">//----------------------------Display options-----------------------------</span>
<span class="number">  55</span>  <a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a><span class="k2">(</span>ALLEGRO_WINDOWED <span class="k3">|</span> ALLEGRO_RESIZABLE <span class="k3">|</span> ALLEGRO_OPENGL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  56</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">2</span>, ALLEGRO_SUGGEST<span class="k2">)</span><span class="k2">;</span>  
<span class="number">  57</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">  58</span>  <span class="c">//--------------------------Display options END---------------------------</span>
<span class="number">  59</span>
<span class="number">  60</span>
<span class="number">  61</span>  <span class="c">//----------------------------Setting Pointers----------------------------</span>
<span class="number">  62</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>WIDTH, HEIGHT<span class="k2">)</span><span class="k2">;</span>
<span class="number">  63</span>  al_apply_window_constraints<span class="k2">(</span>display, <span class="k1">true</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  64</span>
<span class="number">  65</span>  <span class="c">//limits the window to a minimum width and height</span>
<span class="number">  66</span>  al_set_window_constraints<span class="k2">(</span>display, MIN_WIDTH, MIN_HEIGHT, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  67</span>
<span class="number">  68</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">  69</span>  eventQueue <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">  70</span>
<span class="number">  71</span>  <span class="c">//creating game buffer</span>
<span class="number">  72</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_MIN_LINEAR <span class="k3">|</span> ALLEGRO_MAG_LINEAR <span class="k3">|</span> ALLEGRO_MIPMAP<span class="k2">)</span><span class="k2">;</span>
<span class="number">  73</span>  al_set_new_bitmap_samples<span class="k2">(</span><span class="n">4</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  74</span>  <a href="http://www.allegro.cc/manual/al_set_new_bitmap_format"><span class="a">al_set_new_bitmap_format</span></a><span class="k2">(</span><span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  75</span>  gameBuffer <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>gameBufferWidth, gameBufferHeight<span class="k2">)</span><span class="k2">;</span>
<span class="number">  76</span>  <span class="c">//--------------------------Setting Pointers END--------------------------</span>
<span class="number">  77</span>
<span class="number">  78</span>
<span class="number">  79</span>  <span class="c">//----------------------------Register events-----------------------------</span>
<span class="number">  80</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>eventQueue, <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">  81</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>eventQueue, <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">  82</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">  83</span>  <span class="c">//--------------------------Register events END---------------------------</span>
<span class="number">  84</span>
<span class="number">  85</span>
<span class="number">  86</span>  <span class="c">//-------------------------------Main loop--------------------------------</span>
<span class="number">  87</span>  <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span>
<span class="number">  88</span>  <span class="k2">{</span>
<span class="number">  89</span>    <span class="k1">do</span>
<span class="number">  90</span>    <span class="k2">{</span>
<span class="number">  91</span>  <span class="c">//------------------------Getting events--------------------------</span>
<span class="number">  92</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">  93</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>eventQueue, <span class="k3">&amp;</span>event<span class="k2">)</span><span class="k2">;</span>
<span class="number">  94</span>
<span class="number">  95</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="number">  96</span>        done <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number">  97</span>
<span class="number">  98</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="number">  99</span>      <span class="k2">{</span>
<span class="number"> 100</span>        <a href="http://www.allegro.cc/manual/al_acknowledge_resize"><span class="a">al_acknowledge_resize</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 101</span>
<span class="number"> 102</span>        <span class="c">//new game buffer scale</span>
<span class="number"> 103</span>        <span class="k1">float</span> windowHeight <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"> 104</span>
<span class="number"> 105</span>        gameBufferHeightScaled <span class="k3">=</span> windowHeight<span class="k2">;</span>
<span class="number"> 106</span>        <span class="c">//16:9 aspect ratio</span>
<span class="number"> 107</span>        gameBufferWidthScaled <span class="k3">=</span> <span class="k2">(</span>windowHeight <span class="k3">/</span> <span class="n">16</span><span class="k2">)</span> <span class="k3">*</span> <span class="n">9</span><span class="k2">;</span> 
<span class="number"> 108</span>
<span class="number"> 109</span>        <span class="c">//center the game buffer</span>
<span class="number"> 110</span>        gameBufferX <span class="k3">=</span> <span class="k2">(</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="k3">/</span> <span class="n">2</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>gameBufferWidthScaled <span class="k3">/</span> <span class="n">2</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 111</span>        gameBufferY <span class="k3">=</span> <span class="k2">(</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="k3">/</span> <span class="n">2</span><span class="k2">)</span> <span class="k3">-</span> <span class="k2">(</span>gameBufferHeightScaled <span class="k3">/</span> <span class="n">2</span><span class="k2">)</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="number"> 115</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="number"> 116</span>      <span class="k2">{</span>
<span class="number"> 117</span>        redraw <span class="k3">=</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 118</span>      <span class="k2">}</span>
<span class="number"> 119</span>      <span class="c">//-----------------------Getting events END-----------------------</span>
<span class="number"> 120</span>    <span class="k2">}</span> <span class="k1">while</span> <span class="k2">(</span><span class="k3">!</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>eventQueue<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 121</span>
<span class="number"> 122</span>
<span class="number"> 123</span>    <span class="c">//-------------------------Redrawing elements-------------------------</span>
<span class="number"> 124</span>    <span class="k1">if</span> <span class="k2">(</span>redraw<span class="k2">)</span>
<span class="number"> 125</span>    <span class="k2">{</span>
<span class="number"> 126</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">235</span>, <span class="n">235</span>, <span class="n">235</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 127</span>
<span class="number"> 128</span>      draw_to_gameBuffer<span class="k2">(</span>gameBuffer, display<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 129</span>
<span class="number"> 130</span>      <a href="http://www.allegro.cc/manual/al_draw_scaled_bitmap"><span class="a">al_draw_scaled_bitmap</span></a>
<span class="number"> 131</span>      <span class="k2">(</span>
<span class="number"> 132</span>        gameBuffer,
<span class="number"> 133</span>        <span class="n">0</span>, <span class="n">0</span>,                      <span class="c">//source X | Y</span>
<span class="number"> 134</span>        gameBufferWidth, gameBufferHeight,        <span class="c">//source W | H</span>
<span class="number"> 135</span>        gameBufferX, gameBufferY,            <span class="c">//destiny X | Y</span>
<span class="number"> 136</span>        gameBufferWidthScaled, gameBufferHeightScaled,  <span class="c">//destiny W | H</span>
<span class="number"> 137</span>        <span class="n">0</span>                        <span class="c">//flags</span>
<span class="number"> 138</span>      <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 139</span>
<span class="number"> 140</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"> 141</span>      redraw <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 142</span>    <span class="k2">}</span>
<span class="number"> 143</span>    <span class="c">//-----------------------Redrawing elements END-----------------------</span>
<span class="number"> 144</span>  <span class="k2">}</span>
<span class="number"> 145</span>  <span class="c">//-----------------------------Main loop END------------------------------</span>
<span class="number"> 146</span>
<span class="number"> 147</span>
<span class="number"> 148</span>  <span class="c">//--------------------------Destroying elements---------------------------</span>
<span class="number"> 149</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"> 150</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>eventQueue<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 151</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"> 152</span>  <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>gameBuffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 153</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"> 154</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"> 155</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="number"> 156</span>  <span class="c">//------------------------Destroying elements END-------------------------</span>
<span class="number"> 157</span>
<span class="number"> 158</span>
<span class="number"> 159</span>  <span class="c">//------------------------------Program END-------------------------------</span>
<span class="number"> 160</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 161</span><span class="k2">}</span>
<span class="number"> 162</span>
<span class="number"> 163</span>
<span class="number"> 164</span><span class="c">//-------------------------Functions definitions------------------------------</span>
<span class="number"> 165</span><span class="k1">void</span> draw_to_gameBuffer<span class="k2">(</span><a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>gameBuffer, <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"> 166</span><span class="k2">{</span>
<span class="number"> 167</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>gameBuffer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 168</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"> 169</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"> 170</span><span class="k2">}</span>
<span class="number"> 171</span><span class="c">//-----------------------Functions definitions END----------------------------</span>
</div></div><p>

any idea of what could be causing this?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Sat, 06 Oct 2018 14:11:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>My guess would be MIP mapping. Try disabling that flag before creating <span class="source-code">gameBuffer</span>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Todd Cope)</author>
		<pubDate>Sat, 06 Oct 2018 17:59:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Todd likely hit the nail on the head. If you want to keep mipmaps on, then after you finish creating your new bitmap, create a clone and use that. The clone will have the mipmaps generated on its creation. Remember to delete the original!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (André Silva)</author>
		<pubDate>Sat, 06 Oct 2018 19:14:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It seems that mipmapping is causing this as you both mentioned, but why mipmapping causes this? well, maybe I&#39;ll never understand, thank you so much for your fast response guys, you are the best. <img src="http://www.allegro.cc/forums/smileys/cool.gif" alt="8-)" /> <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /></p><p>Now all I need to do is to translate my mouse position to the gameBuffer but I guess that&#39;s not gonna be a problem.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Sat, 06 Oct 2018 23:41:57 +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/617574/1039460#target">trictonicmp</a> said:</div><div class="quote"><p> but why mipmapping causes this?</p></div></div><p>Mipmapping is when the graphics system creates multiple smaller resized versions of the bitmap for performance (and aesthetics) and cross-fades between them as they transition between the differently needed versions.</p><p>When a mipmap is not correctly working (because it wasn&#39;t setup correctly for whatever reason), then it will sometimes crossfade into a blank bitmap, thus appearing transparent.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Mark Oates)</author>
		<pubDate>Sun, 07 Oct 2018 01:29:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This is a known bug as referenced by <a href="https://www.allegro.cc/forums/thread/615645">Mark Oates</a> and <a href="https://www.allegro.cc/forums/thread/614948">myself and SiegeLord</a>. I just opened an issue on github for it.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 07 Oct 2018 06:25:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It seems that is indeed a well-known issue and it&#39;s really nice that you, people that work on the source code of Allegro are working to fix this, I really appreciate this community and the support from you to new developers and adventurers that love to work with Allegro, thank you &lt;3.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Sun, 07 Oct 2018 10:40:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If it isn&#39;t clear, you can refresh the mip maps by using <a href="https://liballeg.org/a5docs/trunk/graphics.html#al_clone_bitmap">al_clone_bitmap</a>.</p><p>An 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>   <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">  2</span>
<span class="number">  3</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> img <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">"FluffyTheDragon.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a><span class="k3">*</span> buf <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>BUFWIDTH , BUFHEIGHT<span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>   <span class="c">/*</span>
<span class="number">  6</span><span class="c">   Do various things to img here, or draw img to a buffer</span>
<span class="number">  7</span><span class="c">   */</span>
<span class="number">  8</span>   
<span class="number">  9</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_MIPMAP <span class="k3">|</span> ALLEGRO_VIDEO_BITMAP<span class="k2">)</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> temp <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_clone_bitmap"><span class="a">al_clone_bitmap</span></a><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>   
<span class="number"> 12</span>   <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>img<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>   <a href="http://www.allegro.cc/manual/al_destroy_bitmap"><span class="a">al_destroy_bitmap</span></a><span class="k2">(</span>buf<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>   buf <span class="k3">=</span> temp<span class="k2">;</span>
<span class="number"> 15</span>   temp <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 16</span>   img <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span>
</div></div><p>

The issue is on Github here :<br /><a href="https://github.com/liballeg/allegro5/issues/559">https://github.com/liballeg/allegro5/issues/559</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 07 Oct 2018 12:49:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The &quot;why&quot; is fairly simple. When you load a bitmap from the disk, for instance, the mipmaps get generated then, because it makes sense to do so: there&#39;s actually content to create a mipmap with, and chances are you&#39;re not going to toy with it any more. So it&#39;s the perfect time to both load the bitmap into memory as well as generate and store its mipmaps.</p><p>When you create a new bitmap, the mipmaps are generated too, but they&#39;re empty. Creating a new bitmap is mostly useless unless you&#39;re going to make changes. But then how would the system know that it&#39;s time to generate the mipmaps based on the changes you&#39;ve made? It can&#39;t generate them every time you make a change to the bitmap, otherwise you&#39;d be kissing your performance goodbye. So... it just never does.</p><p>I guess the ideal way would be to, after you&#39;re done editing the new bitmap, tell Allegro that you&#39;re finished, and that it should do cleanup and preparations on the bitmap, like mipmap generation. Since we don&#39;t have that, you have to do it manually: cloning the bitmap counts as creating a new one, which triggers the mipmap generation.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (André Silva)</author>
		<pubDate>Sat, 13 Oct 2018 18:54:59 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>So many thanks for the code Edgar, it helped me a lot and thanks to you André for the explanation, it seems that this &quot;issue&quot; is something that everybody knew except by me <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=";D" border="0" />.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (trictonicmp)</author>
		<pubDate>Sun, 14 Oct 2018 23:25:48 +0000</pubDate>
	</item>
</rss>
