目次 - API(機能別) - サーフェイスの生成と単純な描画 - SDL_Surface

# SDL_Surface

コピーで使われるピクセルの集まりの構造体

## フィールド

Uint32 | flags | (内部使用)
SDL_PixelFormat* | format | サーフェイスに格納されたピクセル形式 詳細はSDL_PixelFormatを参照すること (読取専用)
int | w | 幅のピクセル数 (読取専用)
int | h | 高さのピクセル数 (読取専用)
int | pitch | 幅のピクセルのbyte数 (読取専用)
void* | pixels | 実際のピクセルデータへのポインタ 詳細を参照すること (読み書き可能)
void* | userdata | 自由に利用できるポインタ (読み書き可能)
int | locked | サーフェイスのロックを要求されたときに使う (内部使用)
void* | lock_data | サーフェイスのロックを要求されたときに使う (内部で使用する)
SDL_Rect | clip_rect | サーフェイスへのコピー時のクリップで使われるSDL_Rect構造体 SDL_SetClipRect()で設定できる (読取専用)
SDL_BlitMap | map | 他のサーフェイスへの高速コピーマッピングの情報 (内部使用)
int | refcount | アプリケーションから参照された回数

## サンプルコード

``

    /* この関数はCPUでサーフェイスのピクセルを編集する方法を示すためのものである.
       しかし, サーフェイスをクリアするときは通常はSDL_FillRect()を使うほうがよいだろう. */
    void WipeSurface(SDL_Surface *surface)
    {
        /* ロックの必要のないサーフェイスではこれが高速である. */
        /* 一度ロックすれば surface->pixels に安全にアクセスできるようになる. */
        SDL_LockSurface(surface);

        /* 0を黒色とみなしている. SDL_MapRGBA()を使うとより確実にサーフェイスと色をマッピングできる! */
        /* ピッチ×高さがサーフェイスのバッファ全体のサイズである. */
        SDL_memset(surface->pixels, 0, surface->h * surface->pitch);

        SDL_UnlockSurface(surface);
    }

## 詳細

ほとんどのサーフェイスはpixelsに直接アクセスできる. SDL_SetSurfaceRLE()で最適化されたサーフェイスはpixelsにアクセスする前にSDL_LockSurface()でロックする必要がある. アクセスし終えたならばサーフェイスをコピーする前にSDL_UnlockSurface()を呼ぶ必要がある.

## 関連項目(関数)

SDL_ConvertSurface
SDL_CreateRGBSurface
SDL_CreateRGBSurfaceFrom
SDL_FillRect
SDL_FillRects
SDL_FreeSurface
SDL_GetClipRect
SDL_GetColorKey
SDL_GetSurfaceAlphaMod
SDL_GetSurfaceBlendMode
SDL_GetSurfaceColorMod
SDL_LoadBMP_RW
SDL_LockSurface
SDL_LowerBlit
SDL_MUSTLOCK
SDL_SaveBMP_RW
SDL_SetClipRect
SDL_SetColorKey
SDL_SetSurfaceAlphaMod
SDL_SetSurfaceBlendMode
SDL_SetSurfaceColorMod
SDL_SetSurfacePalette
SDL_BlitScaled
SDL_UnlockSurface
SDL_BlitSurface

## SDL Wikiへのリンク

SDL_Surface - SDL Wiki