XNAでゲームを作ろうとしていて、レベルにピクセルシェーダを適用しているので、ゲームプレイ画面にエフェクトを追加できます。シェイダー自体はうまく機能していますが、実際にはパフォーマンスを後押しする欠点が1つあります。シェーダがアクティブである限り、私がスクリーンに描画するものは、アルファチャンネルで描画されたかのように動作します。私はColor
クラスで構築されたXNAを使ってたくさんのことを描いています。その多くはアルファの変化があります。しかし、シェーダはこれをすべて無視しているようです。これは、シェーダからソースを返すだけでも発生します。カラーからアルファチャンネルを削除する2D Pixel Shader
私はいくつかの解決策を見てきました。最初のものはRenderTarget2Dに描画されていましたが、これでこの問題は解決しましたが、それは私が行きたいとは思っていないアルファにもっと深刻な問題を引き起こしました。
私は少数の人々はシェーダでアルファ値によって色を乗算することを助けるように見えると主張見てきましたが、それはアルファ値の入力が常に1
として読み込まれていることを私に示唆している、全く違いが行われていませんは、ここに私の問題を説明するためにいくつかの画像です:
うまくいけば、誰かがこれを解決する方法を知っています。
シェーダコードを投稿してください。 –
もう少しテストをしました。 XNAのSpriteBatch.Drawメソッドの色を変更すると、 "Color.White"を使用してすべてのテクスチャが描画されます。これは私のために非常に問題です。 – Hoeloe
はい、ピクセルシェーダがアルファ値を無視している、または通過していない場合、そのシェーダを使用するとその効果が見えます。シェーダコードを投稿してください。 –