2010-02-11 31 views
7

Tôi chuyển từ WinForms/XNA để WPF/SlimDX vì:viewports SlimDX trong WPF kiểm soát

  • a) tất cả những lợi ích của WPF trên WinForms (nhưng đường cong học tập = ouch)
  • b) Tôi muốn có nhiều cửa sổ xem SlimDX được gắn với Panels. XNA có 1 màn hình "trò chơi".
  • c, cuối cùng và ít nhất) Hỗ trợ DirectX 10

Tất cả mã XNA trước đây của tôi là C#. Tôi đang gặp khó khăn trong việc tìm ra cách chuyển cổng này sang SlimDX và WPF ở mức cao. Tôi đã tìm kiếm như điên. Gần nhất tôi đã tìm thấy là:

1) http://www.gamedev.net/community/forums/topic.asp?topic_id=507941 Nhiều bài viết chỉ đến cuộc thảo luận này, tuy nhiên nó không đầy đủ và tôi không thể tìm ra XAML và gặp lỗi thiết bị sau khi đính kèm tất cả các sự kiện _slimDXDevice và Window1 đã bị bỏ đi.

2) http://www.codeproject.com/KB/WPF/D3DImage.aspx Bài viết này giả định người dùng đang chuyển C++. Tôi đang chuyển mã XNA rất gần với mã MDX.

Nếu tôi có thể đến điểm mà tôi có biểu mẫu WPF với khung nhìn điều hướng SlimDX tùy chỉnh chỉ là một hộp màu xanh, tôi có thể đi từ đó. Trong XNA tôi render nhiều RenderTargets riêng biệt và đặt chúng trên màn hình, bây giờ tôi muốn đính kèm chúng vào các điều khiển. Nhưng trước tiên, chỉ cần 1 hộp màu xanh! : D

Bất kỳ ý tưởng nào? Tôi cảm thấy rằng điều này đơn giản hoặc có một số mã "cắt cookie" mà tôi đang thiếu. Được đánh giá cao!

+0

Chúng tôi có một mẫu chứng minh điều này trong SlimDX, tuy nhiên , Tôi không tin rằng nó được kiểm tra trong kho SVN và tôi hiện không thể liên lạc với nhà phát triển có nó trong bản sao làm việc của mình. Câu hỏi này khá mơ hồ. Bạn có yêu cầu trợ giúp về các lỗi thiết bị cụ thể không? Nếu có, bạn có thể đăng chúng không? –

+0

Tôi có thể thấy đó là một câu hỏi mơ hồ. Tôi không hỏi về bất kỳ lỗi cụ thể nào, tôi chủ yếu tìm kiếm một giải pháp rất đơn giản, cao cấp cho WPF/SlimDX bằng C#. Tôi dường như không thể tìm thấy tài liệu hoặc ví dụ ở bất kỳ đâu. – bufferz

Trả lời

7

Bạn có thể xem mẫu ngay bây giờ.Nó chỉ được kiểm tra vào kho lưu trữ của chúng tôi, vì vậy bạn sẽ cần phải sử dụng SVN để có được nó (hoặc chờ cho đến khi chúng tôi tàu phát hành tháng 2 2010):

http://code.google.com/p/slimdx/source/detail?r=1356

+0

Điều này thật tuyệt, cảm ơn. – mdm20

+0

Cảm ơn bạn Josh, đây là một ví dụ tuyệt vời. Cũng được thực hiện tốt với ViewModels. Các bạn rất tốt. Tôi hy vọng những người khác đang tìm kiếm WPF/SlimDX kết thúc ở đây. Cảm ơn một lần nữa! – bufferz

+1

Lời hứa thực sự đã viết mẫu, không phải tôi, nhưng tôi sẽ vượt qua điều đó. –

0

D3DImage là lớp bạn muốn sử dụng. Mặc dù hướng dẫn lập trình là C++, nó rất phù hợp với SlimDX và WPF.

Tất cả những gì bạn phải làm với SlimDX, là chạy mã của bạn bình thường, nhưng KHÔNG chạy Trình bày (...) trên thiết bị của bạn hoặc chuỗi trao đổi. Tại thời điểm mà bạn sẽ đặt một Present (...), hãy làm một D3DImage.SetBackBuffer (...) và gửi thuộc tính ComPointer của bề mặt SlimDX của bạn đến nó. Sau đó, làm D3DImage.AddDirect (...) và bây giờ bạn đã kết hợp D3D trong WPF.

Ngoài ra, hãy đảm bảo bạn tạo IDirect3DDevice9Ex hoặc nếu không hiệu suất của bạn sẽ khủng khiếp trong bất kỳ thứ gì ngoài XP!

0

Gần đây tôi đã rối tung xung quanh với D3DImage và SlimDX và không thấy quá khó để làm cho nó hoạt động (với DirextX9). Tôi có một số mã tại máy tính gia đình của tôi mà tôi sẽ đăng sau, nhưng nó khá giống với mã trong các liên kết được cung cấp.

Tôi chưa bao giờ có thể làm cho nó hoạt động với phiên bản DirectX cao hơn. Jeremiah có một blog post tốt đẹp về việc sử dụng một thiết bị directx9 như một liên kết giữa directx 10/11/d2d và D3DImage, nhưng tôi không thể làm cho nó hoạt động với Slimdx. Tôi đã không đặt rất nhiều nỗ lực vào mặc dù directx9 đã làm những gì tôi cần nó để làm và tôi muốn nó hoạt động trên XP.

+0

Cập nhật cho những người khác đang xem tại đây: Tôi có thể lấy mẫu trong SlimDX chạy không có vấn đề với bản phát hành tháng 3 năm 2011 của SlimDX cho DirectX 10. –

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