正在阅读:可能是最快的算法alpha blend汇编源代码可能是最快的算法alpha blend汇编源代码

2004-02-14 09:34 出处:PConline 作者:阿鬼/翻译 责任编辑:zwg
作者 Intel 关键字 alpha blend 源代码 原作者姓名 Intel 文章原始出处 http://www.intel.com 介绍 我从 http://www.gameres.com/Visual/2D/IntelAlpha.htm 此处copy而来 正文 Intel官方网站有一个ablend_565的快速汇编算法,理论上是是把一块32bit RGBA渲染到16bit的buffer上,我的机器是PIII800,函数在system menory中进行,640*480的256级alpha blending,达到100fps,我想可以满足绝大部分的要求了,在这里,我提供了这个算法的应用,希望可以对大家有所帮助。 ablend_565函数,源代码可以直接编译使用,无需其他库函数,感谢intel提供这么好的东西。 首先,我提供一些本人编写的把32bit tga文件读入pRGBABuffer的函数 文件尺寸保存在 width,height //----------------------------------------------------------------------- // Name: LoadTgaFile( TCHAR* strPathname, DWORD** pRGBABuffer, long* width, long* height ) // Desc: 读取32bit tga文件到DWORD缓冲里,返回其尺寸 // Time: 2002.06.22 00:36 // Author: RealRender // Para: // Return: // Note: 这段代码来自directx 7.0 sample中的d3dtextr.cpp,我把他提取了出来 // 方便使用 //----------------------------------------------------------------------- BOOL LoadTgaFile( TCHAR* strPathname, DWORD** pRGBABuffer, long* width, long* height ) { FILE* file = fopen( strPathname, "rb" ); if( NULL == file ) return false; struct TargaHeader { BYTE IDLength; BYTE ColormapType; BYTE ImageType; BYTE ColormapSpecification[5]; WORD XOrigin; WORD YOrigin; WORD ImageWidth; WORD ImageHeight; BYTE PixelDepth; BYTE ImageDescriptor; } tga; fread( &tga, sizeof(TargaHeader), 1, file ); // Only true color, non-mapped images are supported if( ( 0 != tga.ColormapType ) || ( tga.ImageType != 10 && tga.ImageType != 2 ) ) { fclose( file ); return false; } // Skip the ID field. The first byte of the header is the length of this field if( tga.IDLength ) fseek( file, tga.IDLength, SEEK_CUR ); DWORD m_dwWidth = tga.ImageWidth; DWORD m_dwHeight = tga.ImageHeight; DWORD m_dwBPP = tga.PixelDepth; DWORD *m_pRGBAData = new DWORD[m_dwWidth*m_dwHeight]; if( m_pRGBAData == NULL ) { fclose(file); return false; } for( DWORD y=0; y 把32bit buffer分割为rgb和alpha的代码。
键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品