<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Alpha Blending problems</title>
		<link>http://www.allegro.cc/forums/view/587021</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 14 Aug 2006 23:06:39 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ok, I&#39;m working on a platform shooter, and the edges of my graphics are a little pixelated, so, as I did in a backgammon game I wrote not too long ago, I&#39;m using a function that creates an &quot;anti-aliased&quot; sprite by merging the real sprite with a separate alpha channel (same shape, but black and white with blurred edges).  Below is almost exactly the same function I used for my backgammon game, however this one  keeps giving me my sprite rendered as a black box.  </p><p>I don&#39;t know what&#39;s going on.  Masked draw is simply a call to masked blit.  Is there something I&#39;m missing?  I&#39;ve scoured my backgammon code and can&#39;t figure out what&#39;s going on.  It would help if I actually understood what&#39;s going on with the transparency stuff, but it&#39;s not a necessity I don&#39;t guess.</p><p>I tried making a call to set_alpha_blender() before printing and even calling draw_trans_sprite() but that didn&#39;t work either.  Any help would be wonderful, either in fixing my problem or suggesting a better way to do what I&#39;m trying to do.  I AM fairly new to game programming and could use all the help I can get.</p><p>Thanks</p><p>--Wes</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>&#160;</td></tr><tr><td class="number">2</td><td><span class="k1">void</span> main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">3</td><td><span class="k2">{</span></td></tr><tr><td class="number">4</td><td>    <span class="c">/*MAIN STUFF*/</span></td></tr><tr><td class="number">5</td><td>    daggy<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> makeMasked<span class="k2">(</span><span class="s">"data/images/daggy_sprite.bmp"</span>,<span class="s">"data/images/daggy_alpha.bmp"</span>, <span class="n">128</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>    daggy<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> makeMasked<span class="k2">(</span><span class="s">"data/images/daggy_sprite2.bmp"</span>,<span class="s">"data/images/daggy_alpha2.bmp"</span>, <span class="n">128</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td>    CSprite playerCharacter<span class="k2">(</span>daggy,<span class="n">1</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">100</span>,<span class="n">100</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    FixPlatformCollision<span class="k2">(</span>playerCharacter,background<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    playerCharacter.update<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>    FixBoundsCollisions<span class="k2">(</span>playerCharacter<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>    </td></tr><tr><td class="number">13</td><td>    playerCharacter.masked_draw<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td>    <a href="http://www.allegro.cc/manual/blit" target="_blank"><span class="a">blit</span></a><span class="k2">(</span>buffer,<a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">0</span>,SCREENW,SCREENH<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>    <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">}</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">17</td><td>    <span class="c">/*MAIN STUFF*/</span></td></tr><tr><td class="number">18</td><td><span class="k2">}</span></td></tr><tr><td class="number">19</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td><a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a><span class="k3">*</span> makeMasked<span class="k2">(</span><span class="k1">char</span><span class="k3">*</span> image_file, <span class="k1">char</span><span class="k3">*</span> alpha_file, <span class="k1">int</span> alpha<span class="k2">)</span></td></tr><tr><td class="number">22</td><td><span class="k2">{</span></td></tr><tr><td class="number">23</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>tempPiece<span class="k2">;</span></td></tr><tr><td class="number">24</td><td>    <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>sprite<span class="k2">;</span></td></tr><tr><td class="number">25</td><td>    <span class="k1">int</span> c, a<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    </td></tr><tr><td class="number">27</td><td>    tempPiece <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span>image_file,NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    sprite <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span>alpha_file,NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>      </td></tr><tr><td class="number">30</td><td>    <a href="http://www.allegro.cc/manual/drawing_mode" target="_blank"><span class="a">drawing_mode</span></a><span class="k2">(</span>DRAW_MODE_TRANS, NULL, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>    <a href="http://www.allegro.cc/manual/set_write_alpha_blender" target="_blank"><span class="a">set_write_alpha_blender</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>      </td></tr><tr><td class="number">33</td><td>    <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> y<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> y<span class="k3">&lt;</span>sprite-&gt;h<span class="k2">;</span> y<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">34</td><td>      <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> x<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> x<span class="k3">&lt;</span>sprite-&gt;w<span class="k2">;</span> x<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">35</td><td>        c <span class="k3">=</span> <a href="http://www.allegro.cc/manual/getpixel" target="_blank"><span class="a">getpixel</span></a><span class="k2">(</span>sprite, x, y<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>        a <span class="k3">=</span> <a href="http://www.allegro.cc/manual/getr" target="_blank"><span class="a">getr</span></a><span class="k2">(</span>c<span class="k2">)</span> <span class="k3">+</span> <a href="http://www.allegro.cc/manual/getg" target="_blank"><span class="a">getg</span></a><span class="k2">(</span>c<span class="k2">)</span> <span class="k3">+</span> <a href="http://www.allegro.cc/manual/getb" target="_blank"><span class="a">getb</span></a><span class="k2">(</span>c<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>        a <span class="k3">=</span> MID<span class="k2">(</span><span class="n">0</span>, a<span class="k3">/</span><span class="n">2</span><span class="k3">-</span>alpha, <span class="n">255</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>        <a href="http://www.allegro.cc/manual/putpixel" target="_blank"><span class="a">putpixel</span></a><span class="k2">(</span>tempPiece, x, y, a<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">40</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">41</td><td>    </td></tr><tr><td class="number">42</td><td>    <a href="http://www.allegro.cc/manual/drawing_mode" target="_blank"><span class="a">drawing_mode</span></a><span class="k2">(</span>DRAW_MODE_SOLID, NULL, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>    </td></tr><tr><td class="number">44</td><td>    <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>sprite<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">45</td><td>    <span class="k1">return</span> tempPiece<span class="k2">;</span></td></tr><tr><td class="number">46</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (thehuggableone)</author>
		<pubDate>Mon, 14 Aug 2006 03:32:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m just taking a wild guess here, but stick in a couple lines in the program to save the masked bitmaps to .tga files, then make a little allegro utility to display these and call getpixel() on mouse clicks to display the rgba values.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Mon, 14 Aug 2006 23:06:39 +0000</pubDate>
	</item>
</rss>
