如何在XNA 4.0中禁用纹理过滤以进行精灵缩放?


22

我有一个要在XNA中按比例放大的精灵,但是XNA正在应用某种纹理过滤来使其平滑并使它看起来丑陋。我希望它只是做像素加倍而不是插值。我该怎么做?

Answers:


28

您需要设置采样器状态。SpriteBatch的默认值为SamplerState.LinearClamp(即:线性插值-平滑/模糊1)。

选择一个SpriteBatch.Begin接听SamplerState并传递的呼叫SamplerState.PointClamp(选择该点“点”处的像素)。


13

以防万一其他人想知道如何在Sprite批处理之外执行此操作,您可以在渲染基本体之前执行此操作:

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

如果渲染管道中还有其他项目会更改该值(例如SpriteBatch),则必须在每一帧上执行此操作。


3
是的 只是为了完整起见,SamplerState.PointWrap如果您想进行纹理包装(同时仍禁用纹理过滤),则还有一个问题。或者,如果您需要自己的自定义行为,则可以创建一个SamplerState满足任何自定义需求的新对象,并将Filter属性更改为TextureFilter.Point
David Gouveia 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.