私は SDL と OpenGL を使用しています。テキストでサーフェスを作成し、そのサーフェスでテクスチャを作成するためにSDL ttfを使用しています。
テキストにアルファ チャネル (不透明度) を適用しようとしています。この方法を使用しています。
SDL_Surface * fontsurf = TTF_RenderUTF8_Blended(font,buff_split.at(i).c_str(),color);
SDL_PixelFormat *format = fontsurf->format;
SDL_Surface* newSurface = SDL_CreateRGBSurface( SDL_SRCALPHA,
fontsurf->w, fontsurf->h, 32,
0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000 );
Uint32 alpha = 0;
alpha = SDL_MapRGBA( newSurface->format, 0,0,0, color.unused);
SDL_Rect rect;
rect.x = 0;
rect.y = 0;
rect.h = fontsurf->h;
rect.w = fontsurf->w;
int ret = SDL_FillRect( newSurface, &rect, alpha);
SDL_SetAlpha(newSurface,SDL_SRCALPHA,SDL_ALPHA_TRANSPARENT);
ret = SDL_BlitSurface( fontsurf, 0, newSurface, 0 );
不透明度は正しく適用されますが、SDL_MapRGBA は "newSurface" に黒い背景を作成します。背景を追加せずにテキストのみにアルファ/不透明度を適用するにはどうすればよいですか?