Search
Write a publication
Pull to refresh
19
0
Роман Шапиро @rds1983

C#

Send message

Знаю только о существовании https://github.com/immunant/c2rust

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

Под загружать имеется ввиду декодировать из форматов 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.

Конечно, можно.

Существует даже соответствующий форк: https://github.com/TechPizzaDev/StbSharp.Image

Насколько я понял, LXUI использует именно StbSharp для загрузки картинок :)
http://lxui.ru/documentation/namespace_stb_image_sharp.html

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

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

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

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# принесли наибольшее количество боли. И как они решались. Это потянет на отдельную статью.

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity