亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gp_alpha.cpp

?? 圣劍英雄傳II雙刃劍番外篇(源程序+文檔).
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//==============================Additive==========================
//	additive混合相關(guān)函數(shù)
//================================================================

//****************************
//功能:兩個點(diǎn)的Additive混合
//參數(shù):源點(diǎn),目標(biāo)點(diǎn)
//返回:混合后的點(diǎn)
WORD Additive_Pixel(WORD sour, WORD dest)
{
	//C++版
	//簡單了,明白了alpha混合,這個就不算什么了
	//不懂的話,恩,看看alpha混合的注釋先
	rgbTemp = (((sour<<16)|sour) & rgbMask) + (((dest<<16)|dest) & rgbMask);
	rgbTemp = rgbTemp & rgbMask;
	return (WORD)((rgbTemp>>16)|rgbTemp);
}

//***************************
//功能:兩個表面的Additive混合
//參數(shù):(SS:目標(biāo)表面 DS:源表面 Color_Key:透明色[0:無])
void AdditiveBlt(LPDIRECTDRAWSURFACE SS,int x,int y, LPDIRECTDRAWSURFACE DS,RECT rcRect, WORD Color_Key)
{
	WORD *Dest,*Sour;
	int t1,t2;
	int DestWidth, SourWidth;
	
	//取目標(biāo)頁面指針
	if( BeginDraw(DS) )
	{
		Dest=(WORD *)GraphBuffer;
		DestWidth=GraphPitch;
		EndDraw(DS);
	}

	//取目標(biāo)頁面指針
	if( BeginDraw(SS) )
	{
		Sour=(WORD *)GraphBuffer;
		SourWidth=GraphPitch;
		EndDraw(SS);
	}

	//邊界檢查
	if( x<0 ) 
	{  
		rcRect.left = rcRect.left - x; 
		x=0; 
	}

	if( y<0 ) 
	{  
		rcRect.top  = rcRect.top - y; 
		y=0; 
	}

	if( x+ rcRect.right - rcRect.left > ScreenWidth ) 
	{ 
		rcRect.right = rcRect.left + ScreenWidth - x; 
	}

	if( y+ rcRect.bottom - rcRect.top > ScreenHeight ) 
	{ 
		rcRect.bottom = rcRect.top + ScreenHeight - y; 
	}
	//看上面的吧
	t1=SourWidth*y+x;
	t2=DestWidth*rcRect.top+rcRect.left;
	int rectWidth=rcRect.right-rcRect.left;
	int SW=SourWidth-rectWidth;					//沒有語言了
	int DW=DestWidth-rectWidth;

	if( Color_Key == 0 )	//無透明色檢查
	{
		for(int i=0; i<rcRect.bottom-rcRect.top; i++)
		{
			for( int j=0; j<rectWidth; j++)
			{
				Sour[t1]=_Additive_Pixel(Sour[t1], Dest[t2]);
				t1++;
				t2++;
			}
			t1+=SW;
			t2+=DW;
		}
	}
	else	//透明色檢查
	{
		for(int i=0; i<rcRect.bottom-rcRect.top; i++)
		{
			for( int j=0; j<rectWidth; j++)
			{
				if( Dest[t2] != Color_Key )
					Sour[t1]=_Additive_Pixel(Sour[t1], Dest[t2]);
				t1++;
				t2++;
			}
			t1+=SW;
			t2+=DW;
		}
	}
}

//==============================Gray=============================
//	'RGB->灰度'相關(guān)函數(shù)
//================================================================

//****************************
//功能:把一個RGB點(diǎn)的變成灰度
//參數(shù):源點(diǎn)
//返回:混合后的點(diǎn)
WORD Gray_Pixel(WORD sour)
{
	WORD t;						//看看那個inline版的注釋……
	WORD r, g, b;
	r= sour >> RMove;
	g= (GMask & sour) >> GMove;
	b= BMask & sour;
	t= (r*3 + g*6 + b)/10;

	/*
	//匯編版					//同樣給個注釋吧,本來我是想把這段給刪掉的
	_asm{
		mov ax, sour			//把sour放到ax中
		mov bx, ax				//放到bx中
		mov dx, ax				//放到dx中
		
		mov cl, RMove			//移位數(shù)目
		shr ax, cl				//邏輯右移
		
		and bx, GMask			//與上綠色的掩碼
		mov cl,GMove			//……
		shr bx, cl				//……
		
		and dx, BMask			//與上藍(lán)色的掩碼
		
		add ax, bx				
		add ax, dx				//加到一起
		mov bl, 3
		div bl					//除以3:和上面的算法不一樣
		xor ah, ah				//ah放的是余數(shù),不需要的,清0就是了
		mov t, ax				//放到t中
	}
*/	
	return (t<<RMove)|(t<<GMove)|t;	//合成
}

//****************************
//功能:把圖片變成灰色后BLT
//參數(shù):(SS:目標(biāo)表面 DS:目標(biāo)表面 Color_Key:透明色[0:無])
void Gray_Blt(LPDIRECTDRAWSURFACE SS,int x,int y, LPDIRECTDRAWSURFACE DS,RECT rcRect,WORD Color_Key)
{
  	WORD *Dest,*Sour;
	int DestWidth,SourWidth;
	int t1,t2;
	
	//取目標(biāo)頁面指針
	if( BeginDraw(DS) )
	{
		Dest=(WORD *)GraphBuffer;
		DestWidth=GraphPitch;
		EndDraw(DS);
	}
	
	//取目標(biāo)頁面指針
	if( BeginDraw(SS) )
	{
		Sour=(WORD *)GraphBuffer;
		SourWidth=GraphPitch;
		EndDraw(SS);
	}

	//邊界檢查
	if( x<0 ) 
	{  
		rcRect.left = rcRect.left - x; 
		x=0; 
	}

	if( y<0 ) 
	{  
		rcRect.top  = rcRect.top - y; 
		y=0; 
	}

	if( x+ rcRect.right - rcRect.left > ScreenWidth ) 
	{ 
		rcRect.right = rcRect.left + ScreenWidth - x; 
	}

	if( y+ rcRect.bottom - rcRect.top > ScreenHeight ) 
	{ 
		rcRect.bottom = rcRect.top + ScreenHeight - y; 
	}
	//………………
	t1=SourWidth*y+x;
	t2=DestWidth*rcRect.top+rcRect.left;
	int rectWidth=rcRect.right-rcRect.left;
	int SW=SourWidth-rectWidth;				
	int DW=DestWidth-rectWidth;

	if( Color_Key == 0 )	//沒有透明色
	{
		for(int i=0; i<rcRect.bottom-rcRect.top; i++)
		{
			for( int j=0; j<rectWidth; j++)
			{
				Sour[t1]=_Gray_Pixel(Dest[t2] );
				t1++;
				t2++;
			}
			t1+=SW;
			t2+=DW;
		}
	}
	else	//帶透明色
	{
		for(int i=0; i<rcRect.bottom-rcRect.top; i++)
		{
			for( int j=0; j<rectWidth; j++)
			{
				if( Dest[t2] != Color_Key )
					Sour[t1]=_Gray_Pixel(Dest[t2] );
				t1++;
				t2++;
			}
			t1+=SW;
			t2+=DW;
		}
	}
}

//==============================單色=============================
//	單色處理相關(guān)函數(shù)
//================================================================

//**************************************
//功能:把圖片變成單色(color)后BLT Color=顏色
//參數(shù):(SS:目標(biāo)表面 DS:目標(biāo)表面 Color_Key:透明色[0:無] Color=顏色)
void Color_Blt(LPDIRECTDRAWSURFACE SS,int x,int y, LPDIRECTDRAWSURFACE DS,RECT rcRect,WORD Color_Key, WORD Color)
{
  	WORD *Dest,*Sour;
	int DestWidth,SourWidth;
	int t1,t2;
	
	//取目標(biāo)頁面指針
	if( BeginDraw(DS) )
	{
		Dest=(WORD *)GraphBuffer;
		DestWidth=GraphPitch;
		EndDraw(DS);
	}
	
	//取目標(biāo)頁面指針
	if( BeginDraw(SS) )
	{
		Sour=(WORD *)GraphBuffer;
		SourWidth=GraphPitch;
		EndDraw(SS);
	}

	//邊界檢查
	if( x<0 ) 
	{  
		rcRect.left = rcRect.left - x; 
		x=0; 
	}

	if( y<0 ) 
	{  
		rcRect.top  = rcRect.top - y; 
		y=0; 
	}

	if( x+ rcRect.right - rcRect.left > ScreenWidth ) 
	{ 
		rcRect.right = rcRect.left + ScreenWidth - x;
	}

	if( y+ rcRect.bottom - rcRect.top > ScreenHeight ) 
	{ 
		rcRect.bottom = rcRect.top + ScreenHeight - y; 
	}
	//…………
	t1=SourWidth*y+x;
	t2=DestWidth*rcRect.top+rcRect.left;
	int rectWidth=rcRect.right-rcRect.left;

	int SW=SourWidth-rectWidth;
	int DW=DestWidth-rectWidth;

	for(int i=0; i<rcRect.bottom-rcRect.top; i++)
	{
		for( int j=0; j<rectWidth; j++)
		{
			if( Dest[t2] != Color_Key )		//只要不是透明色就變成所要求的單色
				Sour[t1]=Color;
			t1++;
			t2++;
		}
		t1+=SW;
		t2+=DW;
	}
}

////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////
//**************************************
//功能:查找精靈邊緣
//參數(shù):精靈頁面,邊緣色,透明色
void FindEdge(LPDIRECTDRAWSURFACE lpDDSPict, WORD Color, WORD CK)
{
	int n, i, j;

	if( BeginDraw(lpDDSPict) )
	{
		WORD *Pict=GraphBuffer;
		int Width=GraphWidth;
		int Height=GraphHeight;
		int Pitch=GraphPitch;

		for(i=0; i<Height; i++)
			for(j=0; j<Width; j++)
			{
				n=Pitch*i+j;			//按順序掃描點(diǎn)
				if( Pict[n]!=CK && (Pict[n+1]==CK || Pict[n-1]==CK 
						|| Pict[n+Pitch]==CK || Pict[n-Pitch]==CK ) )
				{
					Pict[n]=Color;			//這個點(diǎn)不是透明的,但是他的周圍四個點(diǎn)有一個
				}							//是透明的。
				else						//左右是加減一
					Pict[n]=CK;				//上下是加減Pitch
			}								//邊緣變成指定的顏色
		EndDraw(lpDDSPict);					//其他都變成透明色
	}
}

//**************************************
//功能:Blt精靈邊緣
//參數(shù):(SS:目標(biāo)表面 DS:源表面 CK:透明色 Color:邊緣顏色)
void Edge_Blt(LPDIRECTDRAWSURFACE SS,int x,int y, LPDIRECTDRAWSURFACE DS,RECT rcRect,WORD CK, WORD Color)
{
  	WORD *Dest,*Sour;
	int DestWidth,SourWidth;
	int t1,t2;
	
	//取源頁面指針
	if( BeginDraw(DS) )
	{
		Dest=(WORD *)GraphBuffer;
		DestWidth=GraphPitch;
		EndDraw(DS);
	}
	
	//取目標(biāo)頁面指針
	if( BeginDraw(SS) )
	{
		Sour=(WORD *)GraphBuffer;
		SourWidth=GraphPitch;
		EndDraw(SS);
	}

	//邊界檢查
	if( x<0 ) 
	{  
		rcRect.left = rcRect.left - x; 
		x=0; 
	}

	if( y<0 ) 
	{  
		rcRect.top  = rcRect.top - y; 
		y=0;
	}

	if( x+ rcRect.right - rcRect.left > ScreenWidth ) 
	{ 
		rcRect.right = rcRect.left + ScreenWidth - x; 
	}

	if( y+ rcRect.bottom - rcRect.top > ScreenHeight ) 
	{ 
		rcRect.bottom = rcRect.top + ScreenHeight - y; 
	}
	//這樣的用法在這個文件里有很多了
	t1=SourWidth*y+x;
	t2=DestWidth*rcRect.top+rcRect.left;
	int rectWidth=rcRect.right-rcRect.left;

	int SW=SourWidth-rectWidth;
	int DW=DestWidth-rectWidth;

	for(int i=0; i<rcRect.bottom-rcRect.top; i++)
	{
		for( int j=0; j<rectWidth; j++)
		{
			//和上個函數(shù)一樣的邏輯,只不過改變的對象不同而已
			if( Dest[t2]!=CK && (Dest[t2+1]==CK || Dest[t2-1]==CK 
						|| Dest[t2+DestWidth]==CK || Dest[t2-DestWidth]==CK ) )
				Sour[t1]=Color;
			t1++;
			t2++;
		}
		t1+=SW;
		t2+=DW;
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费看的电影| 成人免费看的视频| 日韩免费观看高清完整版 | 亚洲人成亚洲人成在线观看图片| 91麻豆免费看| 日本一不卡视频| 国产欧美一区二区精品性色超碰| eeuss鲁片一区二区三区| 性做久久久久久久久| 日韩欧美一区在线观看| 成人精品国产一区二区4080| 亚洲午夜一区二区| 国产亚洲午夜高清国产拍精品| 一本色道久久综合亚洲91 | 国产精品毛片大码女人| 欧美色视频在线观看| 国产美女精品人人做人人爽| 久久99热99| 一区视频在线播放| 日韩一二三四区| 在线观看免费亚洲| 国产精品一区二区久久精品爱涩| 亚洲成人一区二区在线观看| 国产精品视频一区二区三区不卡| 在线播放欧美女士性生活| 美女视频黄久久| 亚洲欧美怡红院| 精品99一区二区三区| 欧美日韩一级片在线观看| 成人福利视频在线看| 久久国产尿小便嘘嘘| 亚洲精品国产一区二区精华液 | 99久久精品国产网站| 国产麻豆一精品一av一免费| 亚洲小少妇裸体bbw| 久久久久久久国产精品影院| 欧美剧情片在线观看| 91香蕉视频mp4| 成人黄色在线视频| 国产一区久久久| 全国精品久久少妇| 亚洲成人一区在线| 亚洲国产一二三| 亚洲精品自拍动漫在线| 国产精品对白交换视频 | 欧美日韩国产欧美日美国产精品| jizz一区二区| 成人av动漫网站| 国产成人在线网站| 国产经典欧美精品| 国产精品456露脸| 国内精品免费**视频| 精品一区二区在线视频| 激情综合网av| 久久国产婷婷国产香蕉| 亚洲成av人片一区二区| 日本欧美韩国一区三区| 免费成人你懂的| 日精品一区二区| 国产mv日韩mv欧美| 毛片av中文字幕一区二区| 麻豆免费精品视频| 五月婷婷久久综合| 日韩久久久久久| 一区二区三区资源| 亚洲欧美日韩电影| 最新中文字幕一区二区三区 | 日韩在线观看一区二区| 欧美成人a在线| 日韩一卡二卡三卡国产欧美| 6080日韩午夜伦伦午夜伦| 欧美三级视频在线| 精品视频一区二区不卡| 欧美丰满美乳xxx高潮www| 欧美一区二区视频在线观看| 91久久精品国产91性色tv| 色美美综合视频| 欧美美女激情18p| 日韩视频一区二区三区在线播放| 日韩欧美综合在线| 国产亚洲人成网站| 国产精品久久久久久妇女6080| 日韩理论片网站| 亚洲大片精品永久免费| 蜜桃一区二区三区四区| 美女视频免费一区| 九九精品一区二区| 精品亚洲免费视频| 99久久伊人久久99| 欧美优质美女网站| 日韩丝袜美女视频| 中文字幕欧美国产| 亚洲国产成人高清精品| 久久成人免费网站| 99视频精品在线| 51精品国自产在线| 亚洲国产成人自拍| 亚洲一区二三区| 久久国产福利国产秒拍| 在线视频一区二区三| 精品免费日韩av| 久久久噜噜噜久久人人看 | 国产欧美久久久精品影院| 久久国产精品无码网站| 国产成人午夜电影网| 色婷婷久久久亚洲一区二区三区| 欧美成人一区二区三区片免费 | 国产精品久久看| 日日摸夜夜添夜夜添国产精品| 国产成人在线视频网站| 欧美久久一二三四区| 国产精品三级av在线播放| 日韩av不卡一区二区| hitomi一区二区三区精品| 日韩欧美一级特黄在线播放| 亚洲视频一区二区免费在线观看| 免费人成在线不卡| 色噜噜狠狠成人中文综合| 精品精品国产高清a毛片牛牛 | 一区二区三区精品在线观看| 久久成人久久爱| 欧美亚洲图片小说| 国产精品亲子乱子伦xxxx裸| 免费在线观看精品| 欧美伊人久久久久久午夜久久久久| 久久精品一区二区三区不卡牛牛| 五月激情丁香一区二区三区| 国产精品白丝jk白祙喷水网站 | 蜜臀av一级做a爰片久久| 91在线精品一区二区三区| 91麻豆精品国产综合久久久久久| 国产女人18水真多18精品一级做| 五月天丁香久久| 在线精品视频小说1| 日本一区二区三级电影在线观看 | 午夜电影久久久| 99久久精品情趣| 精品国产乱码久久久久久久久| 丝袜亚洲另类欧美| 色先锋资源久久综合| 亚洲国产精品激情在线观看| 国产曰批免费观看久久久| 欧美一区日本一区韩国一区| 亚洲午夜免费电影| 在线观看欧美日本| 亚洲精品免费在线播放| 国产成人av电影在线播放| 2017欧美狠狠色| 99久久精品一区| 综合分类小说区另类春色亚洲小说欧美| 国产在线视视频有精品| 欧美日韩一区二区欧美激情| 一区二区三区不卡视频| 99精品欧美一区二区三区小说| 国产精品你懂的在线欣赏| 国产传媒久久文化传媒| 亚洲精品一区二区三区四区高清| 国产中文字幕一区| 久久蜜臀精品av| 国产成人免费高清| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 久草在线在线精品观看| 国产亚洲综合色| 在线亚洲+欧美+日本专区| 琪琪一区二区三区| 国产欧美一区二区精品忘忧草| av亚洲精华国产精华| 午夜精品aaa| 日本一区二区三区国色天香| 日本黄色一区二区| 另类调教123区| 国产精品丝袜一区| 欧美精品色一区二区三区| 久久99精品久久久久久动态图| 国产精品三级视频| 欧美高清视频不卡网| 成人午夜视频免费看| 亚洲va欧美va人人爽午夜| 精品国产精品网麻豆系列| 色老汉av一区二区三区| 蜜桃视频第一区免费观看| 亚洲素人一区二区| 日韩免费观看高清完整版| 91蜜桃网址入口| 国产一区二区三区免费| 亚洲国产成人高清精品| 中文乱码免费一区二区| 91精品国产麻豆| 99re8在线精品视频免费播放| 秋霞影院一区二区| 亚洲欧美日本韩国| 2023国产精品| 欧美肥妇free| 色综合久久六月婷婷中文字幕| 久久精品国产999大香线蕉| 一片黄亚洲嫩模| 国产精品国产自产拍高清av王其| 91精品午夜视频| 欧美综合色免费| av中文字幕不卡|