SDL_Texture* SDL_CreateTextureFromSurface(SDL_Renderer* renderer, SDL_Surface* surface)
renderer | レンダリングコンテキスト |
surface | テクスチャで使うピクセルデータを持つSDL_Surface |
/* 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()で得ることができる.