<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>al_hold_bitmap_drawing</title>
		<link>http://www.allegro.cc/forums/view/617819</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 25 Apr 2019 16:44:22 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, I&#39;m kind of new around here. First of all, I have to say Allegro 5 is great. I&#39;ve only messed around a little with 4 in the past until I bit the bullet and tried out 5.</p><p>Here&#39;s my question:<br />Does al_hold_bitmap_drawing work with al_draw_bitmap_region? Or does it only apply to sub-bitmaps? I&#39;ve searched the forums, and all I&#39;ve concluded was: Maybe.</p><p>Here&#39;s the code I used it with:
</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_hold_bitmap_drawing"><span class="a">al_hold_bitmap_drawing</span></a><span class="k2">(</span><span class="k1">true</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  2</span>   <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> y <span class="k3">=</span> sy<span class="k2">;</span> y <span class="k3">&lt;</span> sy <span class="k3">+</span> y_tiles_in_view<span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  3</span>   <span class="k2">{</span>
<span class="number">  4</span>      <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> x <span class="k3">=</span> sx<span class="k2">;</span> x <span class="k3">&lt;</span> sx <span class="k3">+</span> x_tiles_in_view<span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span>
<span class="number">  5</span>      <span class="k2">{</span>
<span class="number">  6</span>         <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span>x <span class="k3">&lt;</span> MAP_WIDTH<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>x <span class="k3">&gt;</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>y <span class="k3">&lt;</span> MAP_HEIGHT<span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>y <span class="k3">&gt;</span> <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  7</span>         <span class="k2">{</span>
<span class="number">  8</span>            <span class="k1">if</span> <span class="k2">(</span>m-&gt;position<span class="k2">[</span>x <span class="k3">+</span> y <span class="k3">*</span> MAP_WIDTH<span class="k2">]</span>.empty_tile <span class="k3">=</span><span class="k3">=</span> <span class="k1">false</span><span class="k2">)</span>
<span class="number">  9</span>            <span class="k2">{</span>
<span class="number"> 10</span>               <span class="c">//Draw the tile, subtracting the camera position</span>
<span class="number"> 11</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>tile_sheet,
<span class="number"> 12</span>                                     convert_index_to_pixel_xy<span class="k2">(</span>m-&gt;position<span class="k2">[</span>x <span class="k3">+</span> y <span class="k3">*</span> MAP_WIDTH<span class="k2">]</span>.tile, <span class="n">16</span>, TILE_SIZE, RETURN_X<span class="k2">)</span>,
<span class="number"> 13</span>                                     convert_index_to_pixel_xy<span class="k2">(</span>m-&gt;position<span class="k2">[</span>x <span class="k3">+</span> y <span class="k3">*</span> MAP_WIDTH<span class="k2">]</span>.tile, <span class="n">16</span>, TILE_SIZE, RETURN_Y<span class="k2">)</span>,
<span class="number"> 14</span>                                     TILE_SIZE,
<span class="number"> 15</span>                                     TILE_SIZE,
<span class="number"> 16</span>                                     <span class="k2">(</span>x <span class="k3">*</span> TILE_SIZE<span class="k2">)</span> <span class="k3">-</span> c-&gt;x,
<span class="number"> 17</span>                                     <span class="k2">(</span>y <span class="k3">*</span> TILE_SIZE<span class="k2">)</span> <span class="k3">-</span> c-&gt;y,
<span class="number"> 18</span>                                     <span class="n">0</span><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="number"> 21</span>      <span class="k2">}</span>
<span class="number"> 22</span>   <span class="k2">}</span>
<span class="number"> 23</span>   <a href="http://www.allegro.cc/manual/al_hold_bitmap_drawing"><span class="a">al_hold_bitmap_drawing</span></a><span class="k2">(</span><span class="k1">false</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Josh Taylor)</author>
		<pubDate>Thu, 25 Apr 2019 04:14:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>al_hold_bitmap_drawing works on any bitmap as long as the src texture is the same.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 25 Apr 2019 04:53:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Thanks, Edgar! That&#39;s what I hoped to hear.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Josh Taylor)</author>
		<pubDate>Thu, 25 Apr 2019 05:03:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>So yes, your example is using al_hold_bitmap_drawing correctly. It&#39;s designed to work with atlas&#39;s and tile maps.</p><p>Things that would make it work less effectively include changing the source texture. So if you tried to draw many small independent bitmaps each with their own texture, the performance gain would be practically nil. Because each time the source texture changes, it has to rebind it with the gpu in order to draw from it.</p><p>Also to note, al_hold_bitmap_drawing does not work with primitive drawing. It&#39;s for bitmap drawing only.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 25 Apr 2019 16:44:22 +0000</pubDate>
	</item>
</rss>
