本文整理汇总了C++中CSprite::optimizeSurface方法的典型用法代码示例。如果您正苦于以下问题:C++ CSprite::optimizeSurface方法的具体用法?C++ CSprite::optimizeSurface怎么用?C++ CSprite::optimizeSurface使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CSprite
的用法示例。
在下文中一共展示了CSprite::optimizeSurface方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CreateYellowSpriteofTile
void CEGASprit::CreateYellowSpriteofTile( CTilemap &tilemap, Uint16 tile, CSprite& sprite )
{
SDL_Rect tile_rect;
tile_rect.x = 16*(tile%13);
tile_rect.y = 16*(tile/13);
tile_rect.w = tile_rect.h= 16;
sprite.setSize(tile_rect.w, tile_rect.h);
sprite.createSurface( g_pVideoDriver->mp_VideoEngine->getBlitSurface()->flags,
g_pGfxEngine->Palette.m_Palette );
sprite.optimizeSurface();
SDL_Surface *src_sfc = sprite.getSDLSurface();
SDL_BlitSurface(tilemap.getSDLSurface(), &tile_rect, src_sfc, NULL);
if(SDL_MUSTLOCK(src_sfc)) SDL_LockSurface(src_sfc);
if(src_sfc->format->BitsPerPixel == 8) return;
// The first pixel is usually the transparent one on items. Use it!
Uint8* pixel = (Uint8*)src_sfc->pixels;
Uint32 transparent_colour;
Uint32 colour;
Uint8 r,g,b,a;
memcpy(&transparent_colour, pixel, src_sfc->format->BytesPerPixel);
for(Uint8 x=0 ; x<16 ; x++)
{
for(Uint8 y=0 ; y<16 ; y++)
{
memcpy(&colour, pixel, src_sfc->format->BytesPerPixel);
SDL_GetRGBA( colour, src_sfc->format, &r, &g, &b, &a );
if( colour == transparent_colour )
a = 0;
if( r!=0 && g!=0 && b!=0 && a!=0)
r = g = 255;
colour = SDL_MapRGBA( src_sfc->format, r, g, b, a );
memcpy( pixel, &colour ,src_sfc->format->BytesPerPixel);
pixel += src_sfc->format->BytesPerPixel;
}
}
if(SDL_MUSTLOCK(src_sfc)) SDL_UnlockSurface(src_sfc);
}