SlimDX против SDL — Что лучше?

#.net #vb.net #directx #sdl #slimdx

#.net #vb.net #directx #sdl #slimdx

Вопрос:

Для тех, у кого есть опыт работы с VB.NET проще использовать SlimDX или SDL? Руководства по SlimDX уже написаны для .NET, но я читал, что SDL намного проще, чем сам DirectX. В моем случае мне просто нужна 2D графика.

Кроме того, какой язык вы рекомендуете. Я обычно использую VB.NET но, вероятно, большинство руководств по Интернету на C #, и я не думаю, что было бы сложно изучить его, поскольку я знаю C и PHP. 🙂

Комментарии:

1. c#.NET почти такой же, как VB.NET функционально. Единственное различие заключается в синтаксисе, который через неделю или две станет привычным. Вероятно, лучше всего освоиться с C#.NET поскольку вы будете свободно владеть языком, который знают больше программистов.

Ответ №1:

SDL может быть проблемой для пользователей со старыми видеокартами, которым, как правило, не хватает приличного ускорения OpenGL. .NET-оболочки для SDL также устарели, когда я проверял их в прошлый раз.

Когда я искал приличную библиотеку с аппаратным ускорением 2D для своих .NET-проектов, я в конечном итоге использовал библиотеку под названием Gorgon. Он основан на SlimDX и направлен на то, чтобы сделать SlimDX более объектно-ориентированным и простым в использовании для 2D-приложений.

Он поддерживает рендеринг любого элемента управления, который вам нравится, вы можете свободно смешивать его с материалами Windows Forms. Производительность в основном такая же, как у SlimDX, поскольку это, по сути, оболочка SlimDX.

Вот несколько ссылок, если вам интересно:

Комментарии:

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

2. У меня есть несколько старых компьютеров, которые полностью перегружены приложениями SDL, но отлично запускают SlimDX. Проблема не в том, что это не работает, но вы получаете действительно потрясающую производительность, поскольку аппаратного ускорения нет, а процессор работает довольно медленно. Преимущество DirectX в том, что он отлично работает даже с устаревшими видеокартами, поэтому вы можете получить приемлемую производительность даже на устаревших системах. Конечно, это не имеет значения, если вы не беспокоитесь о старом оборудовании, таком как P2-4s, поскольку все современное может адекватно запускать SDL только в программном режиме.

3. Не знал об этой библиотеке. Я попробую, кажется, это хорошо. Спасибо. 🙂

Ответ №2:

Чтобы ответить на вторую часть вопроса:

VB.NET и C #, по большей части, одинаковы.

Они компилируются в один и тот же конечный код и имеют одинаковую производительность (если вы измените проверку переполнения для каждого из них на соответствие). Вот некоторые различия:

VB.NET

  • Без учета регистра
  • Более подробный, чем C#
  • Унаследовав плохую репутацию от своих БАЗОВЫХ предшественников, многие программисты (в основном, я думаю, на C ), похоже, смотрят на VB.NET как уступающий.
  • Используется реже, чем C#
  • Имеет «With… Заканчивать на «, чего я действительно бы хотел, чтобы у C # было.
  • По умолчанию включена проверка переполнения
  • «Мое» пространство имен

C#

  • Чувствителен к регистру
  • Немного худшее удобство использования — использовав C # и VB в VS08, я обнаружил, что C # intellisense немного менее интеллектуальен.
  • C # требует от вас намного большего приведения типов данных, хотя это обеспечивает вам большую гибкость.
  • Более популярный
  • Тесно связан с другими языками, такими как Java
  • Содержит несколько вещей, которых нет в VB, таких как ключевое слово «unsafe».
  • /* Простые многострочные комментарии */
  • По умолчанию отключен флажок переполнения
  • Нет «Моего» пространства имен

Существует очень мало сценариев, в которых имело бы значение, выбрали ли вы VB.NET или C #, основные различия заключаются просто в синтаксисе и том факте, что многие программисты склонны смотреть на VB.NET как «низший» (который, я думаю, просто является языком программирования, но, к сожалению, так оно и есть)

Тем не менее, вероятно, стоит переключиться с VB.NET для C #, потому что:

  • Это не будет слишком сложным изменением, поскольку они во многом одинаковы
  • Изучение другого языка всегда полезно
  • Как вы сказали, в C # доступно больше руководств, что сэкономит вам время на переводе кода
  • С точки зрения карьеры, возможность сказать, что вы кое-что делали на C #, будет полезной

Почему бы не попробовать? Единственный недостаток, о котором я могу подумать, заключается в том, что вы изучаете две вещи одновременно (SDL / SlimDX C #), но на самом деле C # чертовски прост.

Комментарии:

1. Я не думаю, что изучение C # не будет для меня сложным, потому что у меня уже есть некоторый опыт чтения кода C # и перевода его на VB.NET вручную (иногда код настолько прост, что я даже не использую никаких автоматических инструментов). У меня также есть опыт работы с языками с синтаксисом, подобным C #. Основная проблема в том, что я уже начал свой проект в VB.NET , но это не имеет значения. Я начну это снова. Это не должно быть сложно. 🙂

Ответ №3:

Вероятно, стоит отметить, что VB теперь есть поддержка XNA фреймворка:

Руководство по началу работы:http://create.msdn.com/en-US/education/gamedevelopment/VBSupportForXNA

Комментарии:

1. Да, я уже слышал об этом, но для меня это не важно, потому что я планирую использовать WinForms. В любом случае спасибо. 🙂

2. @Scorch Это может представлять интерес.

3. Не знал, что это возможно. Но есть ли какие-либо зависимости? Это потому, что я создаю библиотеку, которая, вероятно, будет дестрибутед.

4. @Scorch только на XNA самом себе, я думаю.

Ответ №4:

SlimDX — это библиотека относительно низкого уровня. Это позволяет вам получить доступ ко всей мощи DirectX, и вы можете использовать как старое устаревшее оборудование, так и новые топовые компоненты. Это также означает, что сложно настроить что-либо, и вам нужно намного больше кода для рисования простых вещей, таких как спрайты и текст.

Если вы смотрите строго с точки зрения удобства использования, SDL, вероятно, лучший выбор для вас.