Tôi hiện đang phát triển một dự án với SDL. Về cơ bản nó vẽ và di chuyển hình ảnh (bề mặt) trên màn hình.Cách nhanh nhất để xóa khối bộ nhớ (hoặc bề mặt SDL) là gì?
Để di chuyển hình ảnh mà không để lại đường nhỏ, trước tiên bạn phải xóa bề mặt màn hình , giống như glClear() và tôi đang làm việc đó với vòng lặp đơn giản trên bề mặt pixel (cũng vẽ một hộp đen trên bề mặt hoặc ghi nhớ).
Trong khi các giải pháp trước hoạt động tốt cho các bề mặt nhỏ, chúng ngày càng chậm hơn khi bề mặt phát triển lớn hơn vì vậy tôi đang tìm cách nhanh nhất có thể xóa (không) khối bộ nhớ.
Ngoài ra, một người bạn đã chỉ ra rằng việc sử dụng hướng dẫn SIMD có thể thực hiện công việc rất nhanh nhưng lần cuối tôi đã thực hiện ASM là trên 8085, bất kỳ thông tin chi tiết nào về điều này cũng có thể hữu ích.
Vâng, hơi lạ khi chạy SDL trên một vi điều khiển PIC, sau khi tất cả, và PIC không có SIMD. –
YMMV. Kinh nghiệm của tôi là memset thường khá chậm. Những người tôi đã nhìn vào nguồn cho chỉ làm bộ byte. Tôi đã có thành công lớn bằng văn bản của riêng tôi rằng (cho các khu vực lớn hơn) sử dụng viết lớn hơn cho các phần giữa (chỉ sử dụng viết nhỏ ở cuối như necesary). –