游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1973|回复: 0

传奇3 wil图像解压代码

[复制链接]

26

主题

75

帖子

77

积分

注册会员

Rank: 2

积分
77
发表于 2006-8-13 18:25:00 | 显示全部楼层 |阅读模式
郁闷,研究了两天,还是未能完全正确的解析RGB数据.估计是16位图的555格式和565格式转换问题,颜色有点偏绿色,不过图像数据可以解压了.可以看到图像了.现在发出来是希望有能之士能帮忙修正颜色问题,指出问题所在,实在感激不尽.我会一直等的...我等着你回来,,我等着你回来,咳,咳,言归正传, 参数pbDestDataBuff 指问一个足够大的内存区指针 sizeof( 图像宽 * 图像高 * 2), pbWilData指向wil图像起始数据. wWidth是图像宽, wHeight是图像高.关于传奇3的文件头网上早有资料了.
希望有能之士能帮忙修正颜色问题,指出问题所在,实在感激不尽!!!!
BOOL  CWilImageOpear::CompWilDataToBuff( BYTE * pbDestDataBuff,  BYTE * pbWilData, DWORD dwWidth, DWORD dwHeight, DWORD length)
{
        WORD   wRColor;
        WORD   wGColor;
        WORD   wBColor;
        WORD * pwDest             = ( WORD * ) pbDestDataBuff;
        WORD * pwSrc               = ( WORD * ) pbWilData;
        DWORD dwCopyWordCnt = 0;

    for( DWORD i = 0; i < dwHeight; i++ )
    {
       for( DWORD j = 0; j < dwWidth ; j++ )
       {

         if(  *pwSrc == 0xC0 )// 标记,压缩数据
         {  
                pwSrc++;
                dwCopyWordCnt = *pwSrc;
                j             += dwCopyWordCnt;
                pwDest        += dwCopyWordCnt;
                pwSrc++;
          }
          else if( *pwSrc == 0xC1 )  //标记,不压缩的数据
          {
                pwSrc++;
                dwCopyWordCnt = *pwSrc;
                j                      += dwCopyWordCnt;

for( DWORD k = 0; k < dwCopyWordCnt ; k++) //复制不压缩的WORD
{
                  
     pwSrc++;
                     pwDest++;
                    // 0x7C00  0x03E0 0x001F // 0xF800、0x07E0、0x001F
                    wRColor = ( *pwSrc & 0xF800 ) >> 1; //RGB值有点问题
                    wGColor = ( *pwSrc & 0x07C0 ) >> 1;
                    wBColor = ( *pwSrc & 0x003E ) >> 2;

                    *pwDest = wRColor | wGColor | wBColor;
}
                pwSrc++;

           }
       }
     pwSrc++;
   }
         return TRUE;
}

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 03:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表