但是很遺憾,SDL似乎是沒有這個方法…
沒有這個方法的話就自己寫一個吧。
相較於降低品質,鏡射容易多了,所以同樣的事我也不做贅述。
依然是只有PNG和BMP
/**
* Srite :類型-(SDL_Surface *)SDL圖片底層Struct,對像圖片(想轉成BMP的圖)
* type :只有PNG或不是PNG兩種,有興趣的在自己擴充吧
*/
SDL_Surface* Sprite_Convey2Mirror( SDL_Surface* Sprite ,string type)
{
SDL_Surface* Mirror;
if ( type == "PNG" )
Mirror = SDL_DisplayFormatAlpha( Sprite );
else
Mirror = SDL_DisplayFormat( Sprite );
SDL_Color rgb1;
Uint32 rgb3;
#pragma omp parallel for
for ( int j = 0;j < Mirror ->h - 1;++j )
{
for ( int i = 0;i < Mirror ->w - 1;++i )
{
rgb1 = GetRGB( Sprite, i, j );
if ( type == "PNG" )
rgb3 = SDL_MapRGBA( Sprite ->format, rgb1.r, rgb1.g, rgb1.b, rgb1.unused ); //取得目標顏色RGBA,包含alpha
else
rgb3 = SDL_MapRGB( Sprite ->format, rgb1.r, rgb1.g, rgb1.b );//取得目標顏色,不包含alpha
putpixel( Mirror, Sprite ->w - i, j, rgb3 ); //這裡就是整個Function的重點,反方向把顏色撲回去,這個函式之後我再解釋
}
}
return Mirror;
}