Làm cách nào để tắt chức năng lọc kết cấu cho tỷ lệ sprite trong XNA 4.0?


22

Tôi có một sprite mà tôi đang cố gắng tăng quy mô trong XNA, nhưng XNA đang áp dụng một số loại lọc kết cấu giúp làm mịn nó và làm cho nó trông xấu xí. Tôi muốn nó chỉ tăng gấp đôi pixel thay vì nội suy. Làm thế nào tôi có thể hoàn thành nó?

Câu trả lời:


28

Bạn cần đặt trạng thái lấy mẫu. Mặc định cho SpriteBatch là SamplerState.LinearClamp(tức là: nội suy tuyến tính - mịn / mờ).

Chọn một trong các SpriteBatch.Begincuộc gọi nhận SamplerStatevà chuyển qua SamplerState.PointClamp(chọn pixel tại "điểm" đó.


13

Chỉ trong trường hợp người khác đang tự hỏi làm thế nào để thực hiện việc này ngoài một đợt sprite, bạn sẽ làm điều này ngay trước khi hiển thị nguyên thủy của mình:

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

Điều này phải được thực hiện trên mọi khung hình, nếu có các mục khác trong đường dẫn kết xuất của bạn sẽ thay đổi giá trị này (như a SpriteBatch).


3
Vâng! Và chỉ để hoàn thiện, cũng có một điều SamplerState.PointWrapnếu bạn muốn gói kết cấu diễn ra (trong khi vẫn vô hiệu hóa tính năng lọc kết cấu). Hoặc nếu bạn cần hành vi tùy chỉnh của riêng mình, bạn có thể tạo một SamplerStateđối tượng mới để phù hợp với bất kỳ nhu cầu tùy chỉnh nào và thay đổi thuộc Filtertính thành TextureFilter.Point.
David Gouveia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.