XNA 4.0でスプライトスケーリングのテクスチャフィルタリングを無効にするにはどうすればよいですか?


22

XNAで拡大しようとしているスプライトがありますが、XNAはそれを滑らかにして見苦しくする何らかのテクスチャフィルタリングを適用しています。補間の代わりにピクセルの倍増を行うだけです。どうすればそれを達成できますか?

回答:


28

サンプラーの状態を設定する必要があります。SpriteBatchのデフォルトはSamplerState.LinearClamp(つまり:線形補間-滑らかな/ぼやけたもの)です。

を取得して渡すSpriteBatch.Begin呼び出しの1つを選択します(その正確な「ポイント」でピクセルを選択します)。SamplerStateSamplerState.PointClamp


13

スプライトバッチの外でこれを行う方法を他の誰かが疑問に思っている場合に備えて、プリミティブをレンダリングする直前にこれを行います。

this.GraphicsDevice.SamplerStates[0] = SamplerState.PointClamp;

レンダリングパイプラインにこの値を変更する他のアイテムがある場合(aなどSpriteBatch)、すべてのフレームでこれを行う必要があります。


3
うん!また、完全を期すために、SamplerState.PointWrapテクスチャラップを(テクスチャフィルタリングを無効にしたまま)実行したい場合もあります。または、独自のカスタム動作が必要な場合SamplerStateは、カスタムニーズに合わせて新しいオブジェクトを作成し、Filterプロパティをに変更できますTextureFilter.Point
デヴィッドゴーベイア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.