0

自分で作成していないシェーダーを使用してXNAに照明システムを実装してきましたが、問題が発生しました。ゲームのサイズが2の累乗である場合、システムは完全に機能します(現在は1024x512で実行されています)。GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleStrip, Vertices, 0, 2);。_

インターネットの検索では、最も一般的な解決策は、GraphicsDevice.SamplerStates[0] = SamplerState.LinearClamp上の行の真上に行を配置することです。私はこれを試しましたが、効果はありませんでした。実際、解決策を教えようとしたGraphicsDevice.SamplerStates[0]とき、その行を設定する前はnullであるように見えたので、アクティブなサンプラー状態として選択することで、この問題も解決できる可能性があると思いました。また、その方法もわかりません。

それ以外の場合は、私が見つけた他の情報に基づいて、シェーダー内からTextureAddressModeを設定する必要があると思います。その方法についてはこのページに誘導されましたが、まだ困惑していることを告白します。これまでHLSLを使用したことがなく、このページの情報の使用方法がわかりません。

提供する必要のある情報が他にあれば、喜んで提供します。最初に質問をしたところ、ここで現在の情報にたどり着きました。

4

1 に答える 1

0

HLSLで、ピクセルシェーダーが使用しているサンプラーを宣言する行を探します。

この行でクランプするようにアドレスモードを設定できます。

SamplerState somethingLikeThis {
    Filter = MIN_MAG_MIP_LINEAR;
    AddressU = Clamp;
    AddressV = Clamp;
};
于 2012-05-31T08:06:10.667 に答える