游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1543|回复: 2

帮着给这段程序加个ALPHA

[复制链接]

8

主题

20

帖子

22

积分

注册会员

Rank: 2

积分
22
发表于 2005-12-10 20:58:00 | 显示全部楼层 |阅读模式
//省掉了部分代码,把主干代码贴出来
int CGame()
{
if (FAILED(DirectDrawCreateEx(NULL, (void **)&lpdd, IID_IDirectDraw7, NULL)))
   return(0);
if (FAILED(lpdd->SetCooperativeLevel(hwnd,
                                      DDSCL_FULLSCREEN | DDSCL_ALLOWMODEX |
                                      DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT)))
  return(0);
if (FAILED(lpdd->SetDisplayMode(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_BPP,0,0)))
return(0);
memset(&ddsd,0,sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
dsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP;
ddsd.dwBackBufferCount=1;
if (FAILED(lpdd->CreateSurface(&ddsd, &lpddz, NULL)))
   return(0);
ddsd.ddsCaps.dwCaps=DDSCAPS_BACKBUFFER;
if (FAILED(lpddz->GetAttachedSurface(&ddsd.ddsCaps,&lpddb)))
   return(0);  

return(1);
}


int  MGame()
{
if (!Lbmp("位图加载"))
   return(0);
      memset(&ddbltfx,0,sizeof(ddbltfx));
    ddbltfx.dwSize=sizeof(ddbltfx);
        ddbltfx.dwFillColor = _RGB16BIT565(0,0,0);
        lpddb->Blt(&dest_rect,lpddb,&source_rect,DDBLT_WAIT | DDBLT_COLORFILL,
        &ddbltfx);
lpddb->Lock(NULL,&ddsd, DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT,NULL);

USHORT *buf = (USHORT *)ddsd.lpSurface;      

for (int index_y = 0; index_y <SCREEN_HEIGHT ; index_y++)
    {
    for (int index_x = 0; index_x < SCREEN_WIDTH ; index_x++)
        {
      
        UCHAR blue  = (buffer[index_y*SCREEN_WIDTH*3 + index_x*3 ]) >> 3,
              green = (buffer[index_y*SCREEN_WIDTH*3 + index_x*3 + 1]) >> 3,
              red   = (buffer[index_y*SCREEN_WIDTH*3 + index_x*3 + 2]) >> 3;

      
        USHORT rgb = _RGB16BIT565(red,green,blue);

        buf[index_x + (index_y*ddsd.lPitch>> 1)] = rgb;

        }

    }
if (FAILED(lpddb->Unlock(NULL)))
   return(0);
while (FAILED(lpddz->Flip(NULL,DDFLIP_WAIT)));
return(1);

}

8

主题

20

帖子

22

积分

注册会员

Rank: 2

积分
22
 楼主| 发表于 2005-12-11 17:20:00 | 显示全部楼层

Re:帮着给这段程序加个ALPHA

怎么没有高手解决

17

主题

258

帖子

264

积分

中级会员

Rank: 3Rank: 3

积分
264
发表于 2005-12-12 13:30:00 | 显示全部楼层

Re:帮着给这段程序加个ALPHA

到开发文档去看一看吧,那里有解决的方法,似乎在DirectDraw下很复杂。我只记得一个公式
s*(alpha)+d*(1-alpha)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 23:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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