2012-04-06 33 views
6

Tôi đang làm việc trên một dự án trong XNA và tôi đang sử dụng một số họa tiết khá lớn, mà tôi đang tải vào trò chơi dưới dạng đối tượng Texture2D và vẽ trên màn hình nhỏ hơn nhiều so với chúng được tải. điều này là tôi cần phải vẽ chúng ở các kích cỡ khác nhau ở những nơi khác nhau, và, trong khi tôi có thể làm điều này với nhiều kết cấu, nó là không thực tế để làm như vậy.XNA: Chia tỷ lệ xuống các đối tượng họa tiết 2D?

Vấn đề của tôi là XNA dường như không chống răng cưa các đối tượng Texture2D này khi thu nhỏ chúng xuống. Tôi đã thiết lập:

graphics.PreferMultiSampling = true; 

và cũng

spriteBatch.Begin(SpriteBlendMode.AlphaBlend); 

Nhưng vô ích. Tôi cũng đã thử những thứ khác nhau liên quan đến các bộ lọc trong GraphicsDevice nhưng, phải trung thực, mà không thực sự biết những gì tôi đã làm.

Rõ ràng, tôi đang vẽ điều này bằng cách sử dụng một spriteBatch, nhưng ngoài điều đó, không có gì đặc biệt thú vị theo cách tôi vẽ nó.

Dưới đây là một (mở rộng) ví dụ về những gì đang xảy ra, và những gì tôi đang cố gắng để làm cho xảy ra:

Actual ResultDesired Result

Như bạn thấy, XNA không cung cấp bất kỳ anti-aliasing khi rescaling bức hình. Có cách nào tôi có thể buộc nó làm như vậy, trong một nỗ lực để làm cho các cạnh trông sạch hơn?

Trả lời

2

Bạn có đang gọi graphics.PreferMultiSampling = true; trước khi GraphicsDevice được tạo không? Bạn phải bật tính năng này trước khi được tạo, hoặc trong hàm tạo Game hoặc Initialize().

+0

Tôi gọi nó trong Trình tạo trò chơi, sau khi xác định GraphicsDeviceManager (hiển nhiên) và trước khi gọi hàm ApplyChanges(). – Hoeloe

+0

Tôi cũng có thể thêm rằng không có vấn đề nơi tôi thêm nó, nó dường như không có sự khác biệt. – Hoeloe

Các vấn đề liên quan