Как стать автором
Обновить

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

Ваш "ненужные" проекты пользуются довольно большой популярностью! Да и рассказываете вы хорошо: моя область, к примеру, к играм и картинкам ну никак не соотносится, однако ж прочитал статью целиком.

Можете рассказать про Hebron побольше? Может, в отдельной статье?

Hebron работает по тому же принципу, что и Sichem. Т.е. с помощью ClangSharp строится синтаксическое дерево входного файла на C. А затем оно подаётся на вход одному из двух кодогенераторов:

  1. Кодогенератор Roslyn, который генерит C#.

  2. Кодогенератор Rust, который генерит Rust.

В будущем я планирую добавить кодогенераторы для Beef и для Jai(надеюсь, он всё таки когда-нибудь выйдет в публичный доступ).

Отмечу, что у всех моих портов, проекты-генераторы лежат в соответствующих репозиториях.
К примеру, вот проект-генератор StbImageSharp: https://github.com/StbSharp/StbImageSharp/tree/master/generation

А, вот, stb_image_rust: https://github.com/StbRust/stb_image_rust/tree/master/generation

В принципе, могу описать какие отличия в синтаксисе между C и C# принесли наибольшее количество боли. И как они решались. Это потянет на отдельную статью.

тема интересная, напишите пожалуйста.

сделать собственный игровой кросс-платформенный движок на C#

Хотелось движок, а сделали библиотеку? Может не правильно выразились?

Хотел сделать движок. Стал искать библиотеку для загрузки картинок. Нужной не нашёл. Поэтому решил портануть stb_image.h

Замечательная разработка. А подход мне немного напомнил куйаны.

Так а что в итоге с движком?

Так и не сделал. В конце-концов понял, что смысла в таком проекте нет. Движков на шарпе, итак, немерено.

Вопрос немного не по теме, но перейдя по ссылке на stb_image.h я увидел что там в заголовочном *.h файле лежит код, а не только заголовки. Я на си давно не писал, поясните пожалуйста, почему так?

Это называется single-header library. Данный подход позволяет добавить всю библиотеку в проект через один #include.
Более подробно вопрос освещён в faq stb(см. вопрос How do I use these libraries?): https://github.com/nothings/stb

"single-header library"
Есть кстати ещё подход амальгамейшн (Amalgamation).

Отличная библиотека и очень нужная. Почему-то для C# в нашем веку простой png и jpg ещё может являться проблемой. Я искал то, что можно просто взять и использовать, и не тащить какие-то комбайны, и ваша библиотека вне конкуренции.

А какое назначение библиотеки? Из описания я не понял. Написано что позволяет загружать изображения - загружать куда, зачем? Какие кейсы использования?

Куда загружать-то? Вы имеете ввиду считывать с диска?

Под загружать имеется ввиду декодировать из форматов JPG, PNG, BMP, TGA, PSD, GIF и HDR.
Советую, кстати, посмотреть список dependents: https://github.com/StbSharp/StbImageSharp/network/dependents?package_id=UGFja2FnZS00NzgyMTc1NTY%3D
Там очень много самодельных игровых движков. Именно среди таких проектов StbImageSharp пользуется популярностью. Что, впрочем, совершенно логично.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
  1. Не в курсе. Можно спросить у её разраба.

  2. Наверно, можно. Но повышение производительности генерируемого кода не является высокоприоритетной задачей. Мне кажется, что если человеку так важна производительность, то лучше ему сделать биндинги к stb_image.h.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории