Tôi đặt một mục tiêu hiển thị thiết bị là texture2d
. Sau khi vẽ, làm thế nào tôi có thể đọc và ghi các pixel từ mục tiêu render trực tiếp, và trình bày nó sau đó.đọc dữ liệu pixel từ mục tiêu hiển thị trong d3d11
Trả lời
Nếu ý định của bạn là sử dụng nó làm đầu vào cho trình đổ bóng khác: - chỉ cần đảm bảo bạn đã tạo texture2D với D3D11_BIND_RENDER_TARGET và D3D11_BIND_SHADER_RESOURCE.
- Kết nối kết cấu làm mục tiêu hiển thị và hiển thị kết quả.
- Bỏ liên kết đó làm mục tiêu hiển thị và Liên kết nó dưới dạng tài nguyên trình đổ bóng và sử dụng nó trong trình đổ bóng tiếp theo.
- Chỉ cần lưu ý rằng kết cấu không thể bị ràng buộc làm mục tiêu và tài nguyên cùng một lúc.
Nếu ý định của bạn là truy cập kết cấu trên CPU sử dụng C++ làm mảng pixel, thì bạn phải thực hiện một số công việc. Thật không may, do các kiến trúc GPU hiện tại, không thể truy cập trực tiếp vào pixel của texture2D vì các pixel thực sự tồn tại trong tiềm năng bộ nhớ GPU ở định dạng đặc biệt (định dạng bị lốm đốm).
- Tạo kết cấu mà GPU có thể hiển thị.
- Tạo kết cấu dàn dựng (D3D11_USAGE_STAGING) sẽ được sử dụng để nhận đầu ra của GPU.
- Hiển thị kết cấu GPU.
- Phát hành ID3D11DeviceContext :: CopyResource() hoặc ID3D11DeviceContext :: CopySubresource()
- Gọi ID3D11DeviceContext :: Map() trên tài nguyên dàn để truy cập vào pixel.
- Gọi ID3D11DeviceContext :: Unmap() trên tài nguyên dàn dựng.
- Gọi ID3D11DeviceContext :: UpdateSubresource() để cập nhật phiên bản của tài nguyên mà GPU có.
Như bạn có thể thấy điều này chắc chắn không phải là một nhóm hoạt động tầm thường và đi ngược lại kiến trúc GPU ngày nay được tối ưu hóa để làm. Tôi chắc chắn sẽ không khuyên bạn nên nó.
Nếu bạn kết thúc đi xuống con đường này, hãy chắc chắn cũng đọc về tất cả những mối quan tâm về hiệu suất bộ nhớ GPU đọc lại đi kèm với: http://msdn.microsoft.com/en-us/library/windows/desktop/bb205132(v=vs.85).aspx#Performance_Considerations
- 1. WebGL Đọc pixel từ điểm nổi hiển thị mục tiêu
- 2. Nhiều mục tiêu Render không lưu dữ liệu
- 3. C# hiển thị pixel nhanh
- 4. iOS: Nhận dữ liệu pixel theo pixel từ máy ảnh
- 5. Mục tiêu iOS C: Hiển thị tài liệu RTF
- 6. Đọc dữ liệu nhị phân mp3 để hiển thị
- 7. Dữ liệu hiển thị Bảng tính Google Tài liệu từ hàng khớp với tiêu chí
- 8. Đọc pixel từ Ứng dụng OpenGL/GLUT
- 9. Lỗi hiển thị tiêu đề hàng dữ liệu WPF DataGrid
- 10. Đọc pixel từ kết cấu WebGL
- 11. Dữ liệu SQLite hiển thị
- 12. Hiển thị các mục từ cơ sở dữ liệu trong JavaFX TableView
- 13. dữ liệu Pixel Image
- 14. Đọc dữ liệu từ Flight Simulator
- 15. Làm thế nào tôi có thể hiển thị dữ liệu trên QTableWidget và đọc dữ liệu từ nó với tiêu đề?
- 16. Vim - Hiển thị kiểu dữ liệu
- 17. Hiển thị dữ liệu từ cơ sở dữ liệu SQL trong GridView
- 18. Cách hiển thị dữ liệu trong datagridview từ cơ sở dữ liệu truy cập
- 19. Cách hiển thị mô tả mục tiêu-c trong xcode
- 20. Chọn dữ liệu từ truy vấn MySQL "bảng hiển thị"
- 21. Đọc dữ liệu từ DataGridView trong C#
- 22. Hiển thị pixel trên màn hình trong C
- 23. C# Lấy dữ liệu pixel hiệu quả từ System.Drawing.Bitmap
- 24. Cách dễ dàng để tiêu thụ/hiển thị nguồn cấp dữ liệu RSS trong MVC ASP.NET
- 25. Đọc dữ liệu từ bảng tính tài liệu google
- 26. Đọc dữ liệu từ thẻ NFC (IsoDep)
- 27. Hiển thị dữ liệu trong bảng html ASP.NET
- 28. Cách đọc dữ liệu hiển thị của ô, không phải công thức cơ bản trong PHPExcel?
- 29. Android ListView: lấy chỉ mục dữ liệu của mục hiển thị
- 30. Đọc dữ liệu từ tệp Excel trong Objective-C (iPhone)
Bạn có nghĩa là đọc các pixel trở về CPU, hoặc là đầu vào cho một shader khác? – jcoder