Является ли SharpDX достаточно зрелым, чтобы принять его, или я должен просто начать использовать SlimDX прямо сейчас?


10

Я собираюсь остановить свой игровой проект в XNA, потому что, насколько я могу судить, его разработка подходит к концу (и она уже отстает от современных технологий). Поэтому мне нужно принять новый фреймворк или API.

Я просто потратил 2 дня на просмотр C ++ и решил, что это на самом деле не для меня - однако я нахожу простой доступ к DirectX привлекательным. SharpDX звучит как хорошее место для начала, но у него нет документации и комментариев к коду. Я чувствую, что он не совсем готов к использованию.

Меня интересуют мнения людей, которые использовали одну или обе из этих структур, чтобы помочь мне определиться с тем, какую из них мне следует изучить? Спасибо за любой совет.


1
Очень разговорный вопрос :). SharpDX, вероятно, такой же зрелый, как SlimDX, потому что он генерируется непосредственно из заголовков - поэтому он сразу получил 100% от DirectX. Обе библиотеки по сути одинаковы; так что вы можете просто использовать образцы SlimDX для SharpDX.
Джонатан Дикинсон

1
Вполне возможно, что ваша сдержанность в выборе C / C ++ является актуальной проблемой с точки зрения волнения. Пока вы остаетесь на управляемом уровне, вы никогда не сможете получить настоящее мясо, ИМО. Это от кого-то, кто долгое время ругался на управляемые языки, несмотря на то, что формально обучался C ++. Просто наблюдение. Не избегайте C ++ слишком сильно. Это, безусловно, ограничит ваши возможности в этой отрасли, в то время как обратное, безусловно, неверно, поскольку фактически дает вам надежную точку входа в другие отрасли (медицинскую, финансовую, оборонную). Средняя зарплата там намного лучше, к вашему сведению.
Инженер

Я действительно заинтересован в DX, и, хотя я могу в конечном итоге перенести свой проект на Slim или Sharp, я наверняка слышу, что вы говорите. И мне, вероятно, будет полезно продолжать изучать C ++, чтобы я мог преодолеть этот дискомфорт. Я хотел бы думать, что через 12 месяцев, если бы я был в положении, когда мне нужно было использовать C ++ / Direct X, тогда я мог бы сделать это, если это правильный инструмент для работы.
Гэвин Уильямс

Ответы:


16

Я являюсь автором SharpDX, поэтому мой совет будет предвзятым, но я хотел бы, по крайней мере, ответить на некоторые ваши вопросы.

Что касается документации SharpDX, текущее состояние очень ограничено, так как я до сих пор работал над тем, чтобы весь API DirectX был доступен из .NET и новой ОС Win8. Поскольку я еще не закончил на этой стороне, я работаю над предоставлением полного веб-сайта и нескольких статей, объясняющих ключевые концепции SharpDX и то, как вы можете извлечь из этого максимум. Кроме того, имейте в виду, что этот проект в основном предназначен для переноса DirectX в .NET, поэтому это все еще низкоуровневый API. Так что вам нужно немного покопаться в поведении API C ++, чтобы понять, как он работает. К счастью, почти каждый метод в SharpDX соответствует одному методу в DirectX API, поэтому легко проверить, как использовать метод, проверив DirectX API. Система документации, которая будет доступна с SharpDX 2.

Готов ли SharpDX для разработки игры? Короче да.

Прежде всего, меня наняла японская компания для участия в разработке нового 3D-движка на C #, и мы используем SharpDX для рендеринга в Windows.

Во-вторых, я получил много частных писем от разработчиков из компаний, которые используют SharpDX для разработки мультимедийных приложений (начиная от игр, редактора уровней, публикации фотографий в Интернете и т. Д.). Некоторые из этих клиентов довольно крупные (к сожалению, я не могу их процитировать).

Наконец, некоторые общедоступные проекты с открытым исходным кодом используют (или собираются использовать) SharpDX для своего основного рендеринга. Например, Delta Engine уже использует SharpDX для своего рендеринга Direct3D11 (который будет доступен также для Win8). Новый проект ANX (преемник XNA с открытым исходным кодом) также использует SharpDX для рендеринга, геймпадов и управления аудио.

Но SharpDX - это всего лишь шаг на пути к созданию игрового движка, а затем и игры. Поскольку API является низкоуровневым, вы не можете ожидать, что у вас будут такие же высокоуровневые функции, к которым вы привыкли в такой среде, как XNA. Но с минимальными рамками, вы могли бы сделать много вещей.

Кроме того, вы можете использовать хорошо зарекомендовавший себя продукт, такой как Unity, для разработки портативных игр на C #.


1
+1 за ANX. Действительно захватывающе, потому что мне очень нравится простота XNA (я быстро отказался от #DX из-за необходимого количества бустрап-кода).
Джонатан Дикинсон

Ого, спасибо за добавление Александра, я только что прочитал некоторые из ваших постов сегодня вечером о вашем уходе из команды slimDX и о том, что вы думаете о SharpDX. Замечательно видеть такую ​​сфокусированную работу, и здорово иметь другую управляемую среду, управляемые графические движки только расширяются, и я не думаю, что мы еще видели полную возможность. Я просто надеюсь, что проблемы с производительностью управляемого кода, будь то из-за времени вызовов или поведения сборщика мусора, могут быть решены или сведены к минимуму, чтобы быть несущественными. Ваша работа, безусловно, добавляет к этому решению.
Гэвин Уильямс

Там действительно большой выбор. Я скачал Unity. Я никогда раньше не смотрел на игровой движок или что-то подобное, поэтому должно быть интересно посмотреть, что он может сделать и как он это делает. У меня действительно есть основы моего проекта, уже написанные на xna, и он где-то около 5000-10 000 строк кода, поэтому я хотел бы использовать этот код, если смогу. Но до полного завершения еще далеко, так что, полагаю, если я потрачу неделю или две на изучение различных фреймворков и движков, это неплохая инвестиция.
Гэвин Уильямс

Никогда не слышал о ANX до этого поста. Очень интересно, куда это идет. И, кстати, вы можете обновить ссылку в своем сообщении на: worframework.codeplex.com
David Gouveia
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.