Czy SharpDX jest wystarczająco dojrzały, aby go adoptować, czy powinienem właśnie zacząć używać SlimDX?

10

Zaraz zatrzymam mój projekt gry w XNA, ponieważ z tego, co mogę zebrać, jego rozwój dobiega końca (i jest już za obecną technologią). Dlatego muszę przyjąć nową platformę lub interfejs API.

Właśnie spędziłem 2 dni patrząc na C ++ i zdecydowałem, że to naprawdę nie jest dla mnie - jednak uważam, że surowy dostęp do DirectX jest atrakcyjny. SharpDX brzmi jak dobre miejsce do rozpoczęcia, ale nie ma dokumentacji ani komentarzy do kodu. Wydaje mi się, że nie jest jeszcze gotowy do użycia.

Interesują mnie opinie osób, które korzystały z jednego lub obu tych frameworków, aby pomóc mi zdecydować, którego z nich powinienem się nauczyć? Dziękuję za wszelkie porady.

Gavin Williams
źródło
1
Bardzo konwersacyjne pytanie :). SharpDX jest prawdopodobnie tak dojrzały jak SlimDX, ponieważ jest generowany bezpośrednio z nagłówków - jako taki, natychmiast otrzymał 100% DirectX. Obie biblioteki są zasadniczo takie same; więc możesz po prostu użyć próbek SlimDX dla SharpDX.
Jonathan Dickinson
1
Możliwe, że twoja niechęć do używania C / C ++ jest faktycznym problemem pod względem emocji. Dopóki pozostajesz na zarządzanym poziomie, nigdy nie dostaniesz prawdziwego mięsa, IMO. To od kogoś, kto przez długi czas przeklinał zarządzane języki, pomimo formalnego szkolenia w C ++. Tylko obserwacja. Nie unikaj zbyt mocno C ++ . Jeśli to zrobisz, z pewnością ograniczy twoje możliwości w tej branży, podczas gdy odwrotność zdecydowanie nie jest prawdą, w rzeczywistości daje ci solidny punkt wejścia do innych branż (medycznej, finansowej, obronnej). Średnia płaca jest tam znacznie lepsza, FYI.
Inżynier
Naprawdę interesuję się DX-em i chociaż mogę ostatecznie przenieść mój projekt na Slim lub Sharp, z pewnością słyszę to, co mówisz. I prawdopodobnie dobrze by mi było, gdybym nadal uczył się C ++, abym mógł przezwyciężyć ten dyskomfort. Chciałbym myśleć, że za 12 miesięcy, gdybym był na pozycji, w której musiałem używać C ++ / Direct X, mógłbym to zrobić, jeśli jest to odpowiednie narzędzie do tego zadania.
Gavin Williams

Odpowiedzi:

16

Jestem autorem SharpDX, więc moja rada będzie stronnicza, ale chciałbym przynajmniej odpowiedzieć na niektóre z twoich obaw.

Jeśli chodzi o dokumentację SharpDX, obecny stan jest bardzo ograniczony, ponieważ do tej pory pracowałem nad udostępnieniem całego interfejsu API DirectX z .NET i nowego systemu operacyjnego Win8. Ponieważ jestem zamknięty, aby dokończyć tę stronę, pracuję nad udostępnieniem pełnej strony internetowej i kilku artykułów wyjaśniających kluczowe koncepcje SharpDX i sposoby, w jakie możesz z nich skorzystać. Należy również pamiętać, że ten projekt ma głównie na celu przeniesienie DirectX do .NET, więc wciąż jest to interfejs API niskiego poziomu. Wymaga to więc trochę pogłębiania zachowania interfejsu API C ++, aby zrozumieć, jak działa. Na szczęście prawie każda metoda w SharpDX odwzorowuje jedną metodę w interfejsie API DirectX, więc łatwo jest sprawdzić, jak użyć metody, sprawdzając interfejs API DirectX. System dokumentacji, który będzie dostępny z SharpDX 2.

Czy SharpDX jest gotowy do użycia przy tworzeniu gry? Krótko mówiąc: tak.

Po pierwsze, zostałem zatrudniony przez japońską firmę do udziału w rozwoju nowego silnika 3D w C #, a my używamy SharpDX do backendu renderowania w systemie Windows.

Po drugie, otrzymałem wiele prywatnych maili od programistów z firm, które używają SharpDX do tworzenia aplikacji multimedialnych (od gier, edytora poziomów, publikowania zdjęć online ... itp.). Niektórzy z tych klientów są dość duzi (niestety nie mogę ich zacytować).

Wreszcie, niektóre publiczne projekty open source używają (lub zamierzają użyć) SharpDX do swojego głównego renderowania backendu. Na przykład Delta Engine używa już SharpDX do renderowania Direct3D11 (które będzie dostępne również dla Win8). Nadchodzący projekt ANX (następca XNA typu open source) wykorzystuje również SharpDX do renderowania, kontrolerów i zarządzania dźwiękiem.

Ale SharpDX to tylko krok na drodze do zbudowania silnika gry, a następnie gry. Ponieważ API jest niskopoziomowe, nie można oczekiwać, że będą mieć takie same funkcje wysokiego poziomu, jak przyzwyczajenie się do frameworka takiego jak XNA. Ale przy minimalnym frameworku możesz robić wiele rzeczy.

Można również rozważyć użycie dobrze znanego produktu, takiego jak Unity, do tworzenia przenośnych gier w języku C #.

xoofx
źródło
1
+1 za ANX. Naprawdę ekscytujące, ponieważ naprawdę uwielbiam prostotę XNA (szybko zrezygnowałem z #DX ze względu na wymaganą ilość kodu boostrap).
Jonathan Dickinson
Wow, dzięki za dodanie Alexandre, właśnie czytałem dziś wieczorem niektóre z twoich postów na temat odejścia z zespołu slimDX i tego, co masz na myśli dla SharpDX. Wspaniale jest widzieć tak skoncentrowaną pracę i wspaniale jest mieć inną zarządzaną platformę, silniki grafiki zarządzanej stają się coraz większe, i nie sądzę, abyśmy widzieli jeszcze pełną możliwość. Mam tylko nadzieję, że problemy z wydajnością kodu zarządzanego, niezależnie od tego, czy pochodzą one z czasów połączeń, czy ze śmieciarek, zostaną rozwiązane lub zminimalizowane jako nieistotne. Twoja praca z pewnością wzbogaca to rozwiązanie.
Gavin Williams
Naprawdę jest duży wybór. Pobrałem Unity. Nigdy wcześniej nie patrzyłem na silnik gry ani nic takiego, więc powinno być interesujące zobaczyć, co potrafi i jak to robi. Mam już podstawy mojego projektu napisane w XNA i jest gdzieś w pobliżu 5000-10 000 wierszy kodu, więc chciałbym użyć tego kodu, gdybym mógł. Ale wciąż jest jeszcze daleka droga do ukończenia, więc przypuszczam, że jeśli spędzę tydzień lub dwa, patrząc na różne ramy i silniki, nie jest to zła inwestycja.
Gavin Williams
Nigdy nie słyszałem o ANX przed tym postem. Bardzo zainteresowany, dokąd to zmierza. A tak przy okazji, możesz chcieć zaktualizować link do swojego posta na: anxframework.codeplex.com
David Gouveia