SDL_TEXTUREACCESS_STREAMING フラグを使用してテクスチャを作成し、ピクセル データを操作する前にテクスチャをロックする必要があります。特定のピクセルがテクスチャで透明かどうかを確認するには、次のように呼び出します。
SDL_SetTextureBlendMode(t, SDL_BLENDMODE_BLEND);
これにより、テクスチャがアルファ チャネルを認識できるようになります。
次のようなことを試してください:
SDL_Texture *t;
int main()
{
// initialize SDL, window, renderer, texture
int pitch, w, h;
void *pixels;
SDL_SetTextureBlendMode(t, SDL_BLENDMODE_BLEND);
SDL_QueryTexture(t, NULL, &aw, &h);
SDL_LockTexture(t, NULL, &pixels, &pitch);
Uint32 *upixels = (Uint32*) pixels;
// you will need to know the color of the pixel even if it's transparent
Uint32 transparent = SDL_MapRGBA(SDL_GetWindowSurface(window)->format, r, g, b, 0x00);
// manipulate pixels
for (int i = 0; i < w * h; i++)
{
if (upixels[i] == transparent)
// do stuff
}
// replace the old pixels with the new ones
memcpy(pixels, upixels, (pitch / 4) * h);
SDL_UnlockTexture(t);
return 0;
}
ご不明な点がございましたら、お気軽にお問い合わせください。私はこのトピックの専門家ではありませんが。
さらに詳しい資料やチュートリアルについては、 http://lazyfoo.net/tutorials/SDL/index.phpをチェックしてください。チュートリアル 40 では、特にピクセル操作を扱います。
メソッド名に誤りがありましたらお詫び申し上げます(勝手に書きました)。
これが役に立ったことを願っています。