📄 calpha.h
字号:
//阿尔法混合 By Flysky
#pragma once
#define _ALPHA565RGBMASK 0x07e0f81f //0000,0111,1110,0000,1111,1000,0001,1111
#define _ALPHA555RGBMASK 0x03e07c1f //0000,0011,1110,0000,0111,1100,0001,1111
//淡入淡出的变量
extern DWORD s_dwAlphaMask; //Alpha MASK
//Alpha两个函数请不要使用BackBuffer
//而使用无后缓
//两个点的ALPHA混合(内联版) By Flysky
//注意:Sour目标表面,Dest为Alpha通道。
//无汇编
inline WORD AlphaP(WORD Sour,WORD Dest,int aValue)
{
//Release 版本达到 111Fps
//目前应该够了.
DWORD value,dwDest,dwSour;
if (aValue>32) aValue=32;
dwDest=((Dest<<16)|Dest)&s_dwAlphaMask;
dwSour=((Sour<<16)|Sour)&s_dwAlphaMask;
//value=dwSour - dwSour/aValue + dwDest/aValue; //速度快
value=(((dwSour-dwDest)*aValue)>>5)+dwDest; //速度快
//value=(dwDest*(32-aValue)+dwSour*aValue)>>5; //速度慢
value&=s_dwAlphaMask;
value|=(value>>16);
return (WORD)value;
}
bool AlphaS(LPDIRECTDRAWSURFACE7 Dest,LPDIRECTDRAWSURFACE7 Sour,int aValue,COLORREF *colorkey); //两个点的ALPHA混合(内联版)
bool AlphaSR(LPDIRECTDRAWSURFACE7 Sour,LPDIRECTDRAWSURFACE7 Dest,RECT rect,int aValue,COLORREF *colorkey);//两个表面的一部分的ALPHA混合(内联版)
bool AlphaSRP(LPDIRECTDRAWSURFACE7 Sour,int x,int y,LPDIRECTDRAWSURFACE7 Dest,RECT rect,int aValue,COLORREF *colorkey); //最高级的Alpha混合方法
bool AlphaSRP(LPDIRECTDRAWSURFACE7 Sour,int x,int y,LPDIRECTDRAWSURFACE7 Dest,RECT rect,int aValue,WORD colorkey);//最高级的Alpha混合方法
void PixFormat(LPDIRECTDRAWSURFACE7 LpDD); //取得象素格式
bool NTLightTN(LPDIRECTDRAWSURFACE7 Sour,LPDIRECTDRAWSURFACE7 Dest,RECT *rt); //淡入淡出
bool NTLight(LPDIRECTDRAWSURFACE7 Sour,LPDIRECTDRAWSURFACE7 Dest,RECT *rt); //淡入
bool LightTN(LPDIRECTDRAWSURFACE7 Sour,LPDIRECTDRAWSURFACE7 Dest,RECT *rt); //淡出
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -