2009-10-20 35 views
5

Sau khi đọc wikipedia article trên kiến ​​trúc WPF, tôi hơi bối rối với những lợi ích mà WPF sẽ cung cấp cho tôi. (wikipedia không phải là một tài liệu tham khảo nghiên cứu tốt, nhưng tôi thấy nó hữu ích). Tôi có một số câu hỏiWPF Kiến trúc và đồ họa Direct3D tăng tốc

1) WPF sử dụng bề mặt d3d để hiển thị. Tuy nhiên, scenegraph được đưa vào bề mặt d3d bởi lớp tích hợp phương tiện truyền thông, chạy trên CPU. Điều này có đúng không?

2) Tôi vừa phát hiện ra bằng cách đặt câu hỏi ở đây rằng bitmap không sử dụng tài nguyên gốc. Điều này có nghĩa rằng nếu tôi sử dụng rất nhiều hình ảnh, MIL sẽ sao chép mỗi khi dựng hình, thay vì lưu trữ các bitmap trên thẻ video dưới dạng kết cấu?

3) Bài viết đề cập rằng WPF sử dụng thuật toán của họa sĩ quay trở lại phía trước. Thats đau đớn chậm. Có lý do nào hợp lý tại sao WPF bỏ qua bằng cách sử dụng Z-buffering và rendering front to back? Tôi đoán nó bởi vì cách đơn giản nhất để xử lý tính minh bạch, nhưng nó có vẻ yếu.

Lý do tôi hỏi là tôi đang nghĩ rằng sẽ không khôn ngoan nếu tôi đặt hàng trăm nút trên màn hình mặc dù đồng nghiệp của tôi đang nói rằng directx của nó được tăng tốc. Tôi không hoàn toàn tin rằng toàn bộ directx bit tăng tốc về WPF. Tôi đã từng làm việc trên các trò chơi điện tử và bộ nhớ của tôi về viết d3d và mã opengl bảo tôi phải thận trọng.

Trả lời

3

Đối với câu hỏi # 1 và # 3 bạn có thể muốn xem this section của SDK thảo luận the Visual class và cách hướng dẫn hiển thị được trao đổi giữa khung mức cao hơn và lớp tích hợp phương tiện (MIL). Nó cũng thảo luận tại sao thuật toán của họa sĩ được sử dụng.

Đối với # 2, không có điều đó chắc chắn là không đúng. Dữ liệu bitmap sẽ được chuyển đến phần cứng và được lưu trong bộ nhớ cache ở đó.

+0

Cảm ơn. Liên kết kiến ​​trúc rất hữu ích trong việc trả lời một số câu hỏi của tôi :) –

2

Tôi đã thử nghiệm điều đó, tôi đã viết hai chương trình hiển thị 1.000 nút trên màn hình, một trong WinForms và một trong WPF, cả hai đều hoạt động tốt.

Sau đó, tôi đã đẩy lên đến 10.000 nút, tại thời điểm đó ứng dụng WPF mất vài giây để bắt đầu nhưng chạy tốt, ứng dụng WinForms không khởi động.

Win32 chính nó (và WinForms) không được xây dựng cho các ứng dụng với hàng trăm điều khiển (tin rằng tôi đã viết một ứng dụng như vậy), tại một số điểm nó chỉ dừng hoạt động, WPF mặt khác, tiếp tục làm việc ngay cả khi nó chậm xuống một chút tại một số điểm. Vì vậy, nếu bạn cần phải đặt rất nhiều điều khiển trên màn hình WPF là đặt cược tốt nhất của bạn (trừ khi bạn muốn cuộn khung UI của riêng bạn - và bạn nghĩ rằng bạn có thể làm tốt hơn toàn bộ nhóm MS perf).

Ngoài ra, WPF còn có nhiều ưu điểm khác so với tăng tốc đồ họa: đồ họa phong phú hơn, mô hình vẽ dễ làm việc, hoạt ảnh, 3d và yêu thích cá nhân của tôi - ràng buộc dữ liệu tuyệt vời.

Điều này sẽ cho phép bạn phát triển giao diện người dùng phong phú hơn nhanh hơn - và tôi nghĩ điều đó sẽ tạo ra sự khác biệt lớn hơn nhiều so với thuật toán vẽ được sử dụng.

BTW, nếu bạn cần đặt hàng trăm nút trên màn hình, đây có thể là trải nghiệm người dùng kém và bạn có thể muốn xem xét lại thiết kế giao diện người dùng của mình,

+0

Than ôi, ứng dụng của tôi cho thấy chế độ xem tổng đài có nhiều nút để làm cho người vận hành cảm thấy thoải mái. Giao diện người dùng rất lộn xộn, nhưng họ thích nó theo cách đó.Phiên bản mới mà tôi đang làm việc sẽ có khả năng nổi các nút không hữu ích để giảm sự lộn xộn. Tôi nghi ngờ tôi sẽ triển khai khung làm việc của riêng tôi, WPF sẽ làm tốt :) –

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