コピー/クリップ ブリットされるサーフェスのアルファ チャネルを保持する際に問題が発生しました (サーフェスのセクションを小さなサーフェスにブリッティングする、スプライト シートです)。さまざまな解決策を試しましたが、最終的には、透明であるはずのサーフェスが完全に不透明になります (アルファ マスクが白くなります)。
だから私の質問は、1 つの RGBA SDL_Surface をアルファ チャネルを含む別の新しいサーフェス (RGBA) にどのようにコピーするのですか? また、異なる場合は、RGBA サーフェスのセクションを新しい RGBA サーフェス (ソース サーフェスのクリップされた部分と同じサイズ) にどのようにコピーするのでしょうか。
SDL_BlitSurface はアルファ チャンネルをブレンドしているように見えるので、たとえば、タイルシート サーフェスから新しいサーフェスにタイルをコピーしたい場合 (もちろん空白です。SDL はデフォルトでサーフェスを黒または白で塗りつぶしていると想定しています) 、それはアルファ マスクを失うことになるため、そのタイルが最終的に画面にブリットされたときに、画面上にあるものとブレンドされません。
SDL_DisplayFormatAlpha は、アルファ マスクを使用してサーフェスをコピーするのに最適ですが、クリップ パラメータを使用しません。サーフェスの一部ではなく、サーフェス全体をコピーすることだけを目的としているため、私の問題です。