Tôi đã có một thư viện âm thanh cho Silverlight cần tăng tốc trên các máy chậm hơn. Cụ thể, thư viện này sử dụng rộng rãi và lặp đi lặp lại biến đổi FFT như là một phần của thuật toán khử tiếng ồn và giảm tiếng ồn âm thanh của nó, và tôi tự hỏi liệu nó có ý nghĩa gì khi sử dụng GPU cho việc này không (ví dụ như được mô tả, tại đây: http://www.inf.fu-berlin.de/lehre/SS10/SP-Par/doad/fft1.pdf ).
Tôi biết rằng Silverlight 5 cung cấp một cổng khá đơn giản về khung XNA của Microsoft, nhưng thật không may, tôi hoàn toàn không biết gì về mã hóa 3D nói chung và XNA nói riêng. Đối với tôi, có vẻ như về mặt lý thuyết là có thể sử dụng một số kết hợp của các bóng đổ đỉnh và / hoặc pixel để thực hiện phép thuật này, nhưng trước khi tôi đi quá xa con đường này, tôi muốn có một số ý kiến chuyên gia về một vài câu hỏi:
(1) Việc triển khai XNA của SL5 ném đầu ra của đường ống lên một "Bản vẽ mặt". Tôi đã nghĩ rằng đây là nơi tôi có thể đọc kết quả tính toán (loại cách bạn có thể sử dụng WritizableBitmap để đọc kết quả tính toán đổ bóng pixel trong SL4). Nhưng tôi không thể hiểu làm thế nào tôi sẽ làm điều đó: không có phương pháp "GetPixels ()", hoặc bất cứ điều gì tương tự. Trong XNA 4.0 thông thường, VertexBuffer có phương thức GetData () , cũng như các lớp Texture2D và Texture3D , nhưng các phương thức đó bị thiếu trong phiên bản SL5 . Có ai biết cách nào để thực sự đọc kết quả của các đầu ra shader không? Hay GPU là thiết bị chỉ ghi trong SL5?
(2) Có vẻ như vấn đề thực sự với tính toán GPU là đọc kết quả nhanh chóng . Giả sử tôi có thể giải quyết vấn đề # 1, có ai biết liệu FFT có thể tuân theo loại giải pháp này không?
(3) Silverlight 5 bị giới hạn ở Cấp độ 2 của HLSL, có một số hạn chế nghiêm trọng, cho đến khi có hướng dẫn, đăng ký, các chức năng khả dụng, v.v. Có hợp lý không khi mong đợi có thể chuyển FFT hoặc một phần nào đó sang phần này?
Cảm ơn trước.