Comments 23
Ваш "ненужные" проекты пользуются довольно большой популярностью! Да и рассказываете вы хорошо: моя область, к примеру, к играм и картинкам ну никак не соотносится, однако ж прочитал статью целиком.
Можете рассказать про Hebron побольше? Может, в отдельной статье?
Hebron работает по тому же принципу, что и Sichem. Т.е. с помощью ClangSharp строится синтаксическое дерево входного файла на C. А затем оно подаётся на вход одному из двух кодогенераторов:
Кодогенератор Roslyn, который генерит C#.
Кодогенератор 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 пользуется популярностью. Что, впрочем, совершенно логично.
Было бы любопытно узнать сравнение производительности StbSharp и LXUI (https://habr.com/ru/post/671598/)
Насколько я понял, LXUI использует именно StbSharp для загрузки картинок :)
http://lxui.ru/documentation/namespace_stb_image_sharp.html
Конечно, можно.
Существует даже соответствующий форк: https://github.com/TechPizzaDev/StbSharp.Image
StbSharp: история ненужного проекта