私はスプライトベースの格闘ゲームを作成しており、実行時に画像のカラースワッピングを実装したいという開発が進んでいます(ユーザーがインターフェイスを介して、正確な色を何に変更するかを指定できるようにします。そして、ロード画面による中断なしに、瞬時に実行されます)。ピクセルシェーダーで簡単に実現できると思いました。特に他の色を変更するように値を設定して試してみましたが、非常にうまくいきました。次のステップでは、テキストファイル(変更する色と変更する色のカラーコードを含む)からデータを読み取るようにしました。いくつかのエントリがあり、次のような配列に格納されます。
XMFLOAT3 palette[10][2];
そして、これがシェーダーの対応する定数エントリです。
float4 xPalette[10][2];
つまり、変更する色は10色、変更する色は10色です。これを定数バッファーを介してピクセルシェーダーに渡しますが、配列の最後のエントリのみが認識され、他のすべてのエントリはゼロであるため、計画どおりに機能しません。GPUにデータを送信する前の16ビットアラインメントが原因だと思いますか?このようなデータをピクセルシェーダーに送信する方法は他にありますか?これを読んでいただきありがとうございます!