<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GaanZa &#187; alpha blending</title>
	<atom:link href="http://www.gaanza.com/blog/tag/alpha-blending/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gaanza.com</link>
	<description></description>
	<lastBuildDate>Sat, 04 Sep 2010 07:55:44 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Alpha Blending using OpenGL with SDL</title>
		<link>http://www.gaanza.com/blog/alpha-blending/</link>
		<comments>http://www.gaanza.com/blog/alpha-blending/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 14:53:11 +0000</pubDate>
		<dc:creator>padam</dc:creator>
				<category><![CDATA[Opengl with SDL]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[alpha blending]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[sdl]]></category>

		<guid isPermaLink="false">http://www.gaanza.com/blog/?p=88</guid>
		<description><![CDATA[

Alpha Blending is a convex combination of two colors allowing for transparency effects in computer graphics. Blending is used to combine the color of a given pixel that is about to be drawn with the pixel that is already on the screen.  How the colors are combined is based on the alpha value of [...]]]></description>
			<content:encoded><![CDATA[<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.gaanza.com%2Fblog%2Falpha-blending%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
<p><img class="aligncenter size-full wp-image-137" title="sdl_opengl" src="http://www.gaanza.com/wp-content/uploads/2009/06/sdl_opengl1.png" alt="sdl_opengl" width="480" height="150" /></p>
<p>Alpha Blending is a convex combination of two colors allowing for transparency effects in computer graphics. <span class="text">Blending is used to combine the color of a given pixel that is about to be drawn with the pixel that is already on the screen.  How the colors are combined is based on the alpha value of the colors, and/or the blending function that is being used.  Alpha is a 4th color component usually specified at the end.<br />
</span></p>
<p>Alpha Blending in SDL is slow because its not a hardware accelerated. To get a better performance there is OpenGL which is hardware accelerated. So here i&#8217;l show you how to use alpha blending using opengl with sdl.</p>
<div class="codesnip-container" >
<div class="codesnip">glColor4f<span class="br0">&#40;</span><span class="nu0">1</span>.0f,<span class="nu0">1</span>.0f,<span class="nu0">1</span>.0f,alpha<span class="br0">&#41;</span>; <span class="co1">// full Brightness, Alpha</span></p>
<p>glBlendFunc<span class="br0">&#40;</span>GL_SRC_ALPHA,GL_ONE<span class="br0">&#41;</span>; <span class="co1">// Blending Function for  translucency based on source alpha value&gt; </span><br />
&nbsp;</div>
</div>
<p>First line set the color to full brightness with alpha value. An alpha value of 0.0 would mean that the material is completely transparent . A value of 1.0 would be totally opaque. The primitive&#8217;s opacity is specified using glColor4*(). RGB specifies the color, and the alpha parameter specifies the opacity.</p>
<div class="codesnip-container" >
<div class="codesnip">glEnable<span class="br0">&#40;</span>GL_BLEND<span class="br0">&#41;</span>;                      <span class="co1">// Turn Blending on</span></p>
<p>glDisable<span class="br0">&#40;</span>GL_DEPTH_TEST<span class="br0">&#41;</span>;        <span class="co1">//Turn Depth Testing off </span><br />
&nbsp;</div>
</div>
<p>So this is it what you will required to achieve alpha blending.</p>
<p>Below code is a simple FADE IN/FADE OUT program. When UP arow key is pressed then 2d sprite will fade out and when DOWN key is pressed then 2d sprite will fade in.</p>
<p><img class="alignnone size-full wp-image-115" title="alpha" src="http://www.gaanza.com/wp-content/uploads/2009/06/alpha.png" alt="alpha" width="572" height="428" /></p>
<p>Here is the full Source Code:</p>
<div class="codesnip-container" >
<div class="codesnip"><span class="co2">#include &quot;SDL.h&quot;</span><br />
<span class="co2">#include &quot;SDL_image.h&quot;</span><br />
<span class="co2">#include &quot;SDL_opengl.h&quot;</span></p>
<p><span class="co2">#include &amp;lt;stdio.h&amp;gt;</span></p>
<p>GLuint texture=<span class="kw2">NULL</span>;     <span class="co1">//this is a handle to our texture object</span><br />
GLenum texture_format=<span class="kw2">NULL</span>;<br />
GLint nofcolors;</p>
<p>SDL_Event event;</p>
<p><span class="kw4">float</span> alpha=<span class="nu0">1</span>.0f;<br />
bool UP=<span class="kw2">false</span>;         <span class="co1">//Up key is pressed/released</span><br />
bool DOWN=<span class="kw2">false</span>;       <span class="co1">//DOWN key is pressed/released&lt;/em&gt;</span></p>
<p>&lt;em&gt;int loadImage<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
SDL_Surface *surface; <span class="co1">// this surface will tell us the details of the image</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span> <span class="br0">&#40;</span>surface = IMG_Load<span class="br0">&#40;</span><span class="st0">&#8220;flower.png&#8221;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></p>
<p><span class="co1">// Check that the image&#8217;s width is a power of 2</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span> <span class="br0">&#40;</span>surface-&amp;gt;w &amp;amp; <span class="br0">&#40;</span>surface-&amp;gt;w &#8211; <span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span> != <span class="nu0">0</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&#8220;warning: image.bmp&#8217;s width is not a power of 2<span class="es0">\n</span>&#8220;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="co1">// Also check if the height is a power of 2</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span> <span class="br0">&#40;</span>surface-&amp;gt;h &amp;amp; <span class="br0">&#40;</span>surface-&amp;gt;h &#8211; <span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span> != <span class="nu0">0</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&#8220;warning: image.bmp&#8217;s height is not a power of 2<span class="es0">\n</span>&#8220;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="co1">//get number of channels in the SDL surface</span><br />
nofcolors=surface-&amp;gt;format-&amp;gt;BytesPerPixel;</p>
<p><span class="co1">//contains an alpha channel</span><br />
<span class="kw1">if</span><span class="br0">&#40;</span>nofcolors==<span class="nu0">4</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="kw1">if</span><span class="br0">&#40;</span>surface-&amp;gt;format-&amp;gt;Rmask==0&#215;000000ff<span class="br0">&#41;</span><br />
texture_format=GL_RGBA;<br />
<span class="kw1">else</span><br />
texture_format=GL_BGRA;<br />
<span class="br0">&#125;</span><br />
<span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>nofcolors==<span class="nu0">3</span><span class="br0">&#41;</span> <span class="co1">//no alpha channel</span><br />
<span class="br0">&#123;</span><br />
<span class="kw1">if</span><span class="br0">&#40;</span>surface-&amp;gt;format-&amp;gt;Rmask==0&#215;000000ff<span class="br0">&#41;</span><br />
texture_format=GL_RGB;<br />
<span class="kw1">else</span><br />
texture_format=GL_BGR;<br />
<span class="br0">&#125;</span><br />
<span class="kw1">else</span><br />
<span class="br0">&#123;</span><br />
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&#8220;warning: the image is not truecolor&#8230;this will break &#8220;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="co1">// Have OpenGL generate a texture object handle for us</span><br />
glGenTextures<span class="br0">&#40;</span> <span class="nu0">1</span>, &amp;amp;texture <span class="br0">&#41;</span>;</p>
<p><span class="co1">// Bind the texture object</span><br />
glBindTexture<span class="br0">&#40;</span> GL_TEXTURE_2D, texture <span class="br0">&#41;</span>;</p>
<p><span class="co1">// Set the texture&#8217;s stretching properties</span><br />
glTexParameteri<span class="br0">&#40;</span> GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR <span class="br0">&#41;</span>;<br />
glTexParameteri<span class="br0">&#40;</span> GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR <span class="br0">&#41;</span>;</p>
<p>glTexImage2D<span class="br0">&#40;</span> GL_TEXTURE_2D, <span class="nu0">0</span>, nofcolors, surface-&amp;gt;w, surface-&amp;gt;h, <span class="nu0">0</span>,<br />
texture_format, GL_UNSIGNED_BYTE, surface-&amp;gt;pixels <span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span><br />
<span class="kw1">else</span> <span class="br0">&#123;</span><br />
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&#8220;SDL could not load image.bmp: %s<span class="es0">\n</span>&#8220;</span>, SDL_GetError<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
SDL_Quit<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="kw1">return</span> <span class="nu0">1</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="co1">// Free the SDL_Surface only if it was successfully created</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span> surface <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
SDL_FreeSurface<span class="br0">&#40;</span> surface <span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="kw4">void</span> drawImage<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
glClear<span class="br0">&#40;</span> GL_COLOR_BUFFER_BIT <span class="br0">&#41;</span>;   <span class="co1">// Clear the screen before drawing</span></p>
<p>glTranslatef<span class="br0">&#40;</span><span class="nu0">300</span>.<span class="nu0">0</span>,<span class="nu0">200</span>.<span class="nu0">0</span>,<span class="nu0">0</span>.<span class="nu0">0</span><span class="br0">&#41;</span>;</p>
<p>glBindTexture<span class="br0">&#40;</span> GL_TEXTURE_2D, texture <span class="br0">&#41;</span>;   <span class="co1">// Bind the texture to which subsequent calls refer to</span></p>
<p>glColor4f<span class="br0">&#40;</span><span class="nu0">1</span>.0f,<span class="nu0">1</span>.0f,<span class="nu0">1</span>.0f,alpha<span class="br0">&#41;</span>;            <span class="co1">// Full Brightness, Alpha</span><br />
glBlendFunc<span class="br0">&#40;</span>GL_SRC_ALPHA,GL_ONE<span class="br0">&#41;</span>;           <span class="co1">// // Blending Function For Translucency Based On Source Alpha Value</span></p>
<p>glBegin<span class="br0">&#40;</span> GL_QUADS <span class="br0">&#41;</span>;<br />
<span class="co1">// Top-left vertex (corner)</span><br />
glTexCoord2i<span class="br0">&#40;</span> <span class="nu0">0</span>, <span class="nu0">0</span> <span class="br0">&#41;</span>;<br />
glVertex3f<span class="br0">&#40;</span> -<span class="nu0">64</span>, -<span class="nu0">64</span>, <span class="nu0">0</span> <span class="br0">&#41;</span>;</p>
<p><span class="co1">// Bottom-left vertex (corner)</span><br />
glTexCoord2i<span class="br0">&#40;</span> <span class="nu0">1</span>, <span class="nu0">0</span> <span class="br0">&#41;</span>;<br />
glVertex3f<span class="br0">&#40;</span> <span class="nu0">64</span>, -<span class="nu0">64</span>, <span class="nu0">0</span> <span class="br0">&#41;</span>;</p>
<p><span class="co1">// Bottom-right vertex (corner)</span><br />
glTexCoord2i<span class="br0">&#40;</span> <span class="nu0">1</span>, <span class="nu0">1</span> <span class="br0">&#41;</span>;<br />
glVertex3f<span class="br0">&#40;</span> <span class="nu0">64</span>, <span class="nu0">64</span>, <span class="nu0">0</span> <span class="br0">&#41;</span>;</p>
<p><span class="co1">// Top-right vertex (corner)</span><br />
glTexCoord2i<span class="br0">&#40;</span> <span class="nu0">0</span>, <span class="nu0">1</span> <span class="br0">&#41;</span>;<br />
glVertex3f<span class="br0">&#40;</span> -<span class="nu0">64</span>, <span class="nu0">64</span>, <span class="nu0">0</span> <span class="br0">&#41;</span>;<br />
glEnd<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
glLoadIdentity<span class="br0">&#40;</span><span class="br0">&#41;</span>;</p>
<p>SDL_GL_SwapBuffers<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="kw4">int</span> init<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
SDL_Surface *screen;</p>
<p><span class="co1">// Slightly different SDL initialization</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span> SDL_Init<span class="br0">&#40;</span>SDL_INIT_VIDEO<span class="br0">&#41;</span> != <span class="nu0">0</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&#8220;Unable to initialize SDL: %s<span class="es0">\n</span>&#8220;</span>, SDL_GetError<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
<span class="kw1">return</span> <span class="nu0">1</span>;<br />
<span class="br0">&#125;</span></p>
<p>SDL_GL_SetAttribute<span class="br0">&#40;</span> SDL_GL_DOUBLEBUFFER, <span class="nu0">1</span> <span class="br0">&#41;</span>;</p>
<p>screen = SDL_SetVideoMode<span class="br0">&#40;</span> <span class="nu0">640</span>, <span class="nu0">480</span>, <span class="nu0">16</span>, SDL_OPENGL<span class="br0">&#41;</span>;<br />
<span class="kw1">if</span> <span class="br0">&#40;</span> !screen <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&#8220;Unable to set video mode: %s<span class="es0">\n</span>&#8220;</span>, SDL_GetError<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
<span class="kw1">return</span> <span class="nu0">1</span>;<br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="kw4">void</span> init_GL<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="co1">// Set the OpenGL state after creating the context with SDL_SetVideoMode</span></p>
<p>glClearColor<span class="br0">&#40;</span> <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span> <span class="br0">&#41;</span>;</p>
<p>glEnable<span class="br0">&#40;</span> GL_TEXTURE_2D <span class="br0">&#41;</span>;        <span class="co1">// Need this to display a texture</span><br />
glEnable<span class="br0">&#40;</span>GL_BLEND<span class="br0">&#41;</span>;                  <span class="co1">// Turn Blending On</span><br />
glDisable<span class="br0">&#40;</span>GL_DEPTH_TEST<span class="br0">&#41;</span>;         <span class="co1">//Turn Depth Testing Off&lt;/em&gt;</span></p>
<p>glViewport<span class="br0">&#40;</span> <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">640</span>, <span class="nu0">480</span> <span class="br0">&#41;</span>;</p>
<p>glMatrixMode<span class="br0">&#40;</span> GL_PROJECTION <span class="br0">&#41;</span>;<br />
glLoadIdentity<span class="br0">&#40;</span><span class="br0">&#41;</span>;</p>
<p>glOrtho<span class="br0">&#40;</span> <span class="nu0">0</span>, <span class="nu0">640</span>, <span class="nu0">480</span>, <span class="nu0">0</span>, -<span class="nu0">1</span>, <span class="nu0">1</span> <span class="br0">&#41;</span>;</p>
<p>glMatrixMode<span class="br0">&#40;</span> GL_MODELVIEW <span class="br0">&#41;</span>;<br />
glLoadIdentity<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="kw4">void</span> clean_up<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
glDeleteTextures<span class="br0">&#40;</span> <span class="nu0">1</span>, &amp;amp;texture <span class="br0">&#41;</span>;&lt;/em&gt;</p>
<p>SDL_Quit<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">int</span> argc, <span class="kw4">char</span> *argv<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="co1">//Make sure the program waits for a quit</span><br />
bool quit = <span class="kw2">false</span>;</p>
<p>init<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
init_GL<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
loadImage<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
drawImage<span class="br0">&#40;</span><span class="br0">&#41;</span>;</p>
<p><span class="kw1">while</span><span class="br0">&#40;</span> quit == <span class="kw2">false</span> <span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="kw1">if</span><span class="br0">&#40;</span> SDL_PollEvent<span class="br0">&#40;</span> &amp;amp;event <span class="br0">&#41;</span> <span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="co1">//If a key was pressed</span><br />
<span class="kw1">if</span><span class="br0">&#40;</span> event.<span class="me1">type</span> == SDL_KEYDOWN <span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="co1">//Adjust the velocity</span><br />
<span class="kw1">switch</span><span class="br0">&#40;</span> event.<span class="me1">key</span>.<span class="me1">keysym</span>.<span class="me1">sym</span> <span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="kw1">case</span> SDLK_UP:<br />
UP=<span class="kw2">true</span>;<br />
<span class="kw2">break</span>;<br />
<span class="kw1">case</span> SDLK_DOWN:<br />
DOWN=<span class="kw2">true</span>;<br />
<span class="kw2">break</span>;<br />
<span class="kw1">case</span> SDLK_ESCAPE:<br />
quit=<span class="kw2">true</span>;<br />
<span class="kw2">break</span>;<br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
<span class="co1">//If a key was released</span><br />
<span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span> event.<span class="me1">type</span> == SDL_KEYUP <span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="co1">//Adjust the velocity</span><br />
<span class="kw1">switch</span><span class="br0">&#40;</span> event.<span class="me1">key</span>.<span class="me1">keysym</span>.<span class="me1">sym</span> <span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="kw1">case</span> SDLK_UP:<br />
UP=<span class="kw2">false</span>;<br />
<span class="kw2">break</span>;<br />
<span class="kw1">case</span> SDLK_DOWN:<br />
DOWN=<span class="kw2">false</span>;<br />
<span class="kw2">break</span>;<br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="co1">// If UP key is pressed</span></p>
<p>
<span class="kw1">if</span><span class="br0">&#40;</span>UP==<span class="kw2">true</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
<span class="kw1">if</span><span class="br0">&#40;</span>alpha&amp;lt;<span class="nu0">1</span>.0f<span class="br0">&#41;</span>         <span class="co1">// make sure alpha value is not greater than maximum value 1.0</span><br />
alpha+=<span class="nu0">0</span>.01f;       <span class="co1">//increase the alpha value, fade out</span><br />
drawImage<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>DOWN==<span class="kw2">true</span><span class="br0">&#41;</span><span class="br0">&#123;</span>    <span class="co1">//If DOWN key is pressed</span><br />
<span class="kw1">if</span><span class="br0">&#40;</span>alpha&amp;gt;<span class="nu0">0</span>.0f<span class="br0">&#41;</span>       <span class="co1">// make sure value of alpha is not less than 0.0f</span><br />
alpha-=<span class="nu0">0</span>.01f;      <span class="co1">// decrease the alpha value, fade in</span><br />
drawImage<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="br0">&#125;</span></p>
<p>clean_up<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="kw1">return</span> <span class="nu0">0</span>;<br />
<span class="br0">&#125;</span></div>
</div>
<p>So thats it. Now you are off to fly.</p>
<p><strong>Gracias.</strong></p>
<p><a name="fb_share" type="box_count share_url="http://www.gaanza.com/blog/alpha-blending/"></a><br />
<script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" 
        type="text/javascript">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaanza.com/blog/alpha-blending/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
