Pull to refresh

Comments 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

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

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

Самый очевидный кейс - геймдев. Там постоянно нужно загружать картинки.

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

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

UFO just landed and posted this here
UFO just landed and posted this here
  1. Не в курсе. Можно спросить у её разраба.

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

Sign up to leave a comment.

Articles

Change theme settings