SharpDX đã đủ trưởng thành để áp dụng chưa hay tôi nên bắt đầu sử dụng SlimDX ngay bây giờ?


10

Tôi sắp dừng dự án trò chơi của mình ở XNA vì từ những gì tôi có thể thu thập được, sự phát triển của nó sắp kết thúc (và nó đã đi sau công nghệ hiện tại). Do đó, tôi cần áp dụng một khung hoặc API mới.

Tôi mới dành 2 ngày để xem C ++ và quyết định nó thực sự không dành cho tôi - tuy nhiên tôi thấy quyền truy cập thô vào DirectX hấp dẫn. SharpDX nghe có vẻ là một nơi tốt để bắt đầu, nhưng nó không có tài liệu và không có nhận xét về mã. Tôi cảm thấy như nó chưa hoàn toàn sẵn sàng để sử dụng.

Tôi quan tâm đến ý kiến ​​của những người đã sử dụng một hoặc cả hai khung này, để giúp tôi quyết định chắc chắn nên học cái nào? Cảm ơn vì lời khuyên nào.


1
Câu hỏi rất trò chuyện :). SharpDX có lẽ cũng trưởng thành như SlimDX vì nó được tạo trực tiếp từ các tiêu đề - do đó, anh ta đã nhận được 100% DirectX được gói ngay lập tức. Cả hai thư viện về cơ bản là giống nhau; vì vậy bạn chỉ có thể sử dụng các mẫu SlimDX cho SharpDX.
Jonathan Dickinson

1
Có thể việc bạn cố gắng chọn C / C ++ là vấn đề thực sự về mặt hứng thú. Chừng nào bạn còn ở cấp độ được quản lý, bạn sẽ không bao giờ có được thịt thực sự, IMO. Điều này từ một người trong một thời gian dài đã thề với các ngôn ngữ được quản lý, mặc dù được đào tạo chính thức về C ++. Chỉ là một quan sát. Đừng tránh C ++ quá khó. Nó chắc chắn sẽ giới hạn các lựa chọn của bạn trong ngành này nếu bạn làm, trong khi điều ngược lại là không đúng, vì thực tế nó mang lại cho bạn một điểm vững chắc vào các ngành khác (y tế, tài chính, quốc phòng). Mức lương trung bình tốt hơn rất nhiều ở đó, FYI.
Kỹ sư

Tôi thực sự quan tâm đến DX, và mặc dù cuối cùng tôi có thể chuyển dự án của mình sang Slim hoặc Sharp, tôi chắc chắn đang nghe những gì bạn nói. Và nó có lẽ sẽ phục vụ tốt cho tôi để tiếp tục học C ++ để tôi có thể vượt qua sự khó chịu đó. Tôi muốn nghĩ rằng 12 tháng kể từ bây giờ nếu tôi ở vị trí cần sử dụng C ++ / Direct X thì tôi có thể chọn làm điều đó, nếu đó là công cụ phù hợp cho công việc.
Gavin Williams

Câu trả lời:


16

Tôi là tác giả của SharpDX, vì vậy lời khuyên của tôi sẽ bị sai lệch, nhưng ít nhất tôi muốn trả lời về một số mối quan tâm của bạn.

Về tài liệu của SharpDX, trạng thái hiện tại rất hạn chế, vì tôi đã làm việc cho đến nay để mang toàn bộ API DirectX có thể truy cập từ .NET và HĐH Win8 mới. Khi tôi đóng cửa để hoàn thành về phía này, tôi đang làm việc để cung cấp một trang web đầy đủ và một số bài viết để giải thích các khái niệm chính của SharpDX và làm thế nào bạn có thể tận dụng tốt nhất. Ngoài ra, hãy nhớ rằng dự án này chủ yếu là để mang DirectX lên .NET, vì vậy nó vẫn là một API cấp thấp. Vì vậy, nó đòi hỏi bạn phải đào sâu một chút vào hành vi của API C ++ để hiểu cách thức hoạt động của nó. May mắn thay, hầu hết mọi phương thức trong SharpDX đều ánh xạ tới một phương thức duy nhất trong DirectX API, vì vậy thật dễ dàng để kiểm tra cách sử dụng một phương thức bằng cách kiểm tra DirectX API. Hệ thống tài liệu sẽ có sẵn với SharpDX 2.

SharpDX đã sẵn sàng để được sử dụng để phát triển trò chơi chưa? Tóm lại, Có.

Trước hết, tôi đã được một công ty Nhật Bản thuê để tham gia phát triển công cụ 3D mới trong C # và chúng tôi đang sử dụng SharpDX cho phần phụ trợ kết xuất trên Windows.

Thứ hai, tôi đã nhận được rất nhiều thư riêng từ các nhà phát triển từ các công ty đang sử dụng SharpDX để phát triển ứng dụng đa phương tiện (từ trò chơi, trình chỉnh sửa cấp độ, xuất bản ảnh trực tuyến ... vv.). Một số khách hàng này khá lớn (Thật không may, tôi không thể trích dẫn họ).

Cuối cùng, một số dự án nguồn mở công khai đang sử dụng (hoặc sẽ sử dụng) SharpDX để kết xuất phụ trợ chính của chúng. Ví dụ: Delta Engine đã sử dụng SharpDX để kết xuất Direct3D11 (cũng sẽ có sẵn cho Win8). Upcomming dự án ANX (một XNA kế mã nguồn mở) cũng được sử dụng SharpDX cho các rendering, bàn chơi và quản lý âm thanh.

Nhưng SharpDX chỉ là một bước trên con đường xây dựng một công cụ trò chơi, và sau đó là một trò chơi. Vì API ở cấp độ thấp, bạn không thể mong đợi có cùng loại tính năng cấp cao mà bạn đã sử dụng với một khung như XNA. Nhưng với một khung tối thiểu, bạn có thể làm rất nhiều thứ.

Ngoài ra, bạn có thể cân nhắc sử dụng một sản phẩm được thiết lập tốt như Unity để phát triển các trò chơi di động trong C #.


1
+1 cho ANX. Thực sự thú vị vì tôi thực sự yêu thích sự đơn giản của XNA (Tôi đã nhanh chóng từ bỏ #DX do số lượng mã boostrap cần thiết).
Jonathan Dickinson

Ồ, cảm ơn vì đã thêm Alexandre, tôi vừa đọc một số bài đăng của bạn tối nay khi bạn rời khỏi nhóm slimDX và những gì bạn có trong đầu cho SharpDX. Thật tuyệt khi thấy công việc tập trung như vậy và thật tuyệt khi có một khung được quản lý khác, các công cụ đồ họa được quản lý chỉ ngày càng lớn hơn và tôi không nghĩ rằng chúng ta đã thấy khả năng đầy đủ. Tôi chỉ hy vọng rằng các vấn đề về hiệu năng với Mã được quản lý cho dù chúng xuất phát từ thời gian gọi hoặc hành vi của người thu gom rác có thể được giải quyết hoặc giảm thiểu để không quan trọng. Bạn đang làm việc chắc chắn là thêm vào giải pháp đó.
Gavin Williams

Thực sự có rất nhiều sự lựa chọn. Tôi đã tải xuống Unity. Tôi chưa bao giờ nhìn vào một công cụ trò chơi hoặc bất cứ thứ gì tương tự trước đây, vì vậy thật thú vị khi xem những gì nó có thể làm và cách thức hoạt động của nó. Tôi có các nguyên tắc cơ bản của dự án của tôi đã được viết bằng xna và nó nằm ở đâu đó trong khoảng 5000-10.000 dòng mã vì vậy tôi muốn sử dụng mã đó nếu có thể. Nhưng nó vẫn còn lâu mới hoàn thành, vì vậy tôi cho rằng nếu tôi dành một hoặc hai tuần để xem xét các khung và động cơ khác nhau thì đó không phải là một khoản đầu tư tồi.
Gavin Williams

Chưa bao giờ nghe nói về ANX trước bài này. Rất quan tâm nơi này sẽ đi. Và nhân tiện, bạn có thể muốn cập nhật liên kết trên bài đăng của mình thành: worframework.codeplex.com
David Gouveia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.