Tôi đang tìm kiếm một vấn đề hiệu suất trong phần Vẽ mã xna của tôi cho các cửa sổ điện thoại 7 thỉnh thoảng xuất hiện sau vài giây. Có cách nào tốt nhất để gọi SpriteBatch.Begin để vẽ thứ gì đó không? Nếu nó được gọi cho mỗi vài sprites (trong mỗi lớp khi nó thu hút người chơi, nền, các đối tượng nền, ...) hoặc sẽ gọi ngay từ đầu -> vẽ mọi thứ trong tất cả các lớp con - tốt hơn cho hiệu suất?Tần suất gọi SpriteBatch.Begin() /. End()?
Trả lời
Bạn không nên sử dụng chúng nhiều hơn mức cần thiết, vì Begin() có nghĩa là chuẩn bị thiết bị để hiển thị sprite và End() có nghĩa là khôi phục trạng thái trước đó của nó. Điều này có thể khác nhau thông qua một số cờ trong Begin() cho biết bạn không muốn thay đổi trạng thái, và có thể làm phức tạp mã của bạn bởi vì bạn sẽ phải tự thiết lập một số trạng thái.
Thay đổi trạng thái thiết bị thường chậm và bạn nên tránh thực hiện chúng nếu không bắt buộc, chúng cũng có thể ảnh hưởng đến bất kỳ thứ gì bạn đang làm, vì vậy nếu bạn muốn hiển thị thứ gì đó không có trong SpriteBatch, bạn nên gọi End(), bạn đang render sprites bạn nên gọi nó một lần cho tất cả các sprites.
Để tránh gọi End() để sửa đổi các trạng thái không hiển thị trên ảnh trước đó, bạn nên gọi Flush() thay vì End(). Điều này làm cho các sprites xếp hàng đợi với các biến đổi hiện tại và các trạng thái thiết bị, nhưng để nguyên trạng thái. Hàm End() nào gọi là Flush() và thiết lập lại các trạng thái cụ thể được thiết lập bởi Begin().
Điều tốt nhất là thực hiện cuộc gọi chỉ bắt đầu/kết thúc một lần trên mỗi Draw(), điều này làm cho tất cả các sprites trong một lô được xử lý bởi card đồ họa cùng một lúc. Bạn chỉ nên sử dụng nhiều lô sprite nếu cần. Ví dụ về khi bạn có thể cần phải bao gồm:
- Bạn muốn áp dụng một hiệu ứng duy nhất sprites nhất định, nhưng không phải người khác
- Bạn muốn chụp ảnh màn hình
- Bạn muốn làm một cái gì đó phức tạp hơn với các hiệu ứng
Có ai có thể nghĩ ra một lý do khác cho nhiều lô sprite (bắt đầu-> kết thúc) không?
- 1. Nesting ShapeRenderer.begin/end trong SpriteBatch.begin/end
- 2. Android: Cách tạo tần suất?
- 3. đặt tần suất cập nhật cho thiết bịMotionUpdateInterval là tần suất thực tế?
- 4. SpriteBatch: "Bắt đầu không thể được gọi lại cho đến khi End được gọi thành công."
- 5. PayPal CreateRecurringPaymentsProfile Tần suất thanh toán
- 6. Tần suất xhr.upload.onProgress cháy như thế nào?
- 7. Tần suất tôi phải cập nhật đồng phục của mình?
- 8. Tần suất các trình khởi tạo chạy trong Rails?
- 9. Tần suất cập nhật Trình quản lý vị trí, iphone
- 10. Nhóm SQL theo tần suất trong phạm vi ngày
- 11. Tần suất kiểm tra phản hồi của APNS?
- 12. Các kỹ thuật để tính tần suất tính từ
- 13. Tần suất lịch sự của các yêu cầu AJAX?
- 14. Ảnh hưởng của Stemming đến tần suất hạn?
- 15. Tần suất đánh giá mã nên được thực hiện?
- 16. Tần suất bạn làm điều này trong cron? - 0 * * * *
- 17. phân tích bảng, tối ưu hóa bảng, tần suất?
- 18. Tần suất mẫu âm thanh dựa trên kênh?
- 19. SQL "IF", "BEGIN", "END", "END IF"?
- 20. Một cái gì đó như in END END END; trong C++?
- 21. Cách tạo bảng tần số trong R với tần số tích lũy và tần số tương đối
- 22. làm cách nào để thống kê tần suất báo chí chính của mình và đếm số
- 23. Tần suất số liệu thống kê ứng dụng Market cập nhật?
- 24. Tần suất chuỗi chủ đề chuyển đổi được quản lý là bao lâu?
- 25. Google AppEngine: tần suất "khởi động thời gian chạy" xảy ra
- 26. Cách tìm tần suất của các ký tự trong một chuỗi trong Haskell?
- 27. Sắp xếp danh sách theo tần suất của chữ cái trong python (thứ tự giảm)
- 28. google play - tần suất các số liệu thống kê Developer Console được cập nhật
- 29. Tần suất phông chữ mặc định trong trình duyệt không phải là 16px?
- 30. Tập lệnh Bash để tìm tần suất của mỗi chữ cái trong một tệp
Danh sách quá tải cho Bắt đầu ở đây: http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.spritebatch.begin.aspx Nếu bạn muốn bất kỳ điều gì ở đây khác nhau, chẳng hạn khi chuyển qua hiệu ứng tùy chỉnh hoặc ma trận biến đổi khác, bạn phải thực hiện một cuộc gọi khác. –
Xin chào, tôi không thể chụp ảnh màn hình của một hình ảnh cụ thể nhưng có thể chụp ảnh màn hình trên một hình ảnh khác. Bất kỳ ý tưởng nào, tại sao điều này có thể xảy ra? – nagavamsikrishna
@salsabear, Điều đó nghe giống như tài liệu cho một câu hỏi mới. Nếu bạn bao gồm mã trong câu hỏi, hãy đảm bảo chỉ bao gồm các phần phụ thuộc. –