目次 - API(機能別) - 2Dレンダリング - SDL_CreateTextureFromSurface

# SDL_CreateTextureFromSurface

サーフェイスからテクスチャを生成する

## 構文

`SDL_Texture* SDL_CreateTextureFromSurface(SDL_Renderer* renderer, SDL_Surface* surface)`

## 引数

renderer | レンダリングコンテキスト
surface | テクスチャで使うピクセルデータを持つSDL_Surface

## 戻り値

成功のとき生成されたテクスチャ, 失敗のときNULLを戻す. SDL_GetError()で詳細を知ることができる.

## サンプルコード

``

        /* OpenGLのテクスチャとして使うために
           各ピクセルがR,G,B,A順の32bitサーフェイスを生成する */
        SDL_Surface *surface;
        Uint32 rmask, gmask, bmask, amask;

        /* SDLはピクセルを32bitの値として解釈する.
           よって, マスクはマシンのエンディアン(バイト順)に依存する */
    #if SDL_BYTEORDER == SDL_BIG_ENDIAN
        rmask = 0xff000000;
        gmask = 0x00ff0000;
        bmask = 0x0000ff00;
        amask = 0x000000ff;
    #else
        rmask = 0x000000ff;
        gmask = 0x0000ff00;
        bmask = 0x00ff0000;
        amask = 0xff000000;
    #endif

        surface = SDL_CreateRGBSurface(0, width, height, 32,
                                       rmask, gmask, bmask, amask);
        if (surface == NULL) {
            fprintf(stderr, "CreateRGBSurface 失敗: %s\n", SDL_GetError());
            exit(1);
        }

        SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, surface);

        if (texture == NULL) {
            fprintf(stderr, "CreateTextureFromSurface 失敗: %s\n", SDL_GetError());
            exit(1);
        }

        SDL_FreeSurface(surface);
        surface = NULL;

## 詳細

この関数はサーフェイスを修正/解放しない.

このテクスチャのSDL_TextureAccessヒントはSDL_TEXTUREACCESS_STATICである.

生成されるテクスチャのピクセル形式はサーフェイスのピクセル形式とは異なる場合がある. テクスチャのピクセル形式はSDL_QueryTexture()で得ることができる.

## 関連項目(関数)

SDL_CreateTexture
SDL_DestroyTexture
SDL_QueryTexture

## SDL Wikiへのリンク

SDL_CreateTextureFromSurface - SDL Wiki