Хочу поделиться программной прослойкой SGLib.
Это графическая библиотека на базе D3D12 (пока что), предоставляющая интерфейс, похожий на D3D11, избавляет программиста от рутинного микроменеджмента и позволяет сфокусироваться на алгоритмах и применяемых технологиях.
Ключевые возможности:
Текущая версия 0.0.8.0 (Альфа)
А смысл прятать исходники? Таких оберток сотни.
Используй unique_ptr хотя бы, тебе не надоедает руками писать SG_RELEASE?
Ну и обёртка далека от современного C++, InputLayout можно здорово завернуть используя шаблоны и специализацию, у а тебя обычный C с классами.
v1c
> у а тебя обычный C с классами
что в этом плохого?
luckyleo769
Это либа только для с++ компиляции ?
Или как dll ?
И сколько весит метров dll ?
/A\
> А смысл прятать исходники?
А какой смысл их выкладывать?
v1c
> Используй unique_ptr хотя бы, тебе не надоедает руками писать SG_RELEASE?
Умные указатели не помогут при освобождении, оно должно происходит в OnDestroy, а не в деструкторе. К тому же, в примерах показывается последовательность освобождения ресурсов.
В примере MeshletRender есть ресурсы, обернутые в ComPtr.
v1c
> обёртка далека от современного C++
> обычный C с классами
Так и есть, это задел на универсальность. Библиотеку можно использовать и в C, и обернуть для других языков. Она не требует масштабной переделки проекта, если до этого использовался, например DX11/DX12.
ronniko
> Это либа только для с++ компиляции
Это DLL. Плюс библиотеки импорта для удобства, можно и руками подключать.
ronniko
> И сколько весит метров dll ?
Килобайты, это важно? :)
luckyleo769
> А какой смысл их выкладывать?
Чтоб доказать что у тебя лучше написано чем у сотни других реализаций
Я бы не стал пользоватся библиотекой без исходников от не пойми кого. Это же просто опасно.
/A\
> Чтоб доказать что у тебя лучше написано
В этом нет цели, цель в том, чтобы дать движкописателям удобный инструмент. Если у тебя есть потребность в таком инструменте и он подходит под задачи, ты просто пользуешься. Если не подходит, скорее всего, ты будешь искать что-то другое.
MikeNew
> от не пойми кого
Ну тогда, будем знакомы LinkedIn
MikeNew
> Это же просто опасно
Странно читать это в мире, где большинство пользуется пиратским софтом с торрентов. Fingercross и Windows Defender - наш выбор.
atomic
> Чтобы устранять фатальный недостаток.
Какой?
luckyleo769
> Если не подходит, скорее всего, ты будешь искать что-то другое.
Ну я то могу и сам написать)
А вот как проверить это "(thread-safe work with command lists, resource usage etc)" без исходников?
/A\
> А вот как проверить
Как и любую фичу из спецификации к любому ПО. Как проверить трассировку лучей в DX или Vulkan? Заюзать ее, в данном случае, распараллелить рендер.
Еще чуть позже будет пример на эту тему.
luckyleo769
Я все это спрашиваю не потому что хочу увидеть секретные исходники, а потому что в 99.9% таких либ есть куча ошибок и без исходников это очень сложно проверить и тем более исправить.
К тому же сами валидации для API написаны не идеально, что-то не проверяют, а на что-то дают ложные срабатывания.
Еще есть баги в драйверах, которые надо обходить, поэтому в популярных либах встречаются такие штуки, одиночному разработчику будет сложно искать такие баги, особенно если это проявляется у пользователей.
Вот и вопрос как ты убедишь других пользоваться именно твоей либой.
> в данном случае, распараллелить рендер.
Я как-то нашел дедлок в проекте который 5 лет использовался, так что многопоточку таким способом не проверить.
luckyleo769
> цель в том, чтобы дать движкописателям удобный инструмент
движкописателям это вовсе не нужно. Как движкописатель вам сообщаю, что мне как инструмент нужны конвертеры мешей, картинок итп. Ещё движкописателям нужны туториалы - это образцы минимального кода без шаблонов, наследования, заумных показателей и прочей ++ ереси, реализующие какую-то технику, например зеркало, тень, вода, солнце, облака итп.
/A\
> Я как-то нашел дедлок в проекте который 5 лет использовался, так что многопоточку таким способом не проверить.
... на баги - согласен, но открытые исходники здесь не помогут и миллиард юзеров просто читающих код тоже.
Половина успеха борьбы с багами - репорты от пользователей, в данном случае от разрабов, вторая - разработчик с полным видением и пониманием проекта.
Привлечение пользователей в разработку - это совершенно другого рода проекты, типа GNU.
Открытость не влияет на качество, а закрытость не влияет на популярность.
У меня встречный вопрос, ты смотрел примеры?
iw4nna.rock
> мне как инструмент нужны конвертеры мешей, картинок
Это тулзы, никто не может знать лучше разработчика движка, что ему нужно.
> реализующие какую-то технику, например зеркало, тень, вода, солнце, облака
Если все это буду делать я, то и движкописателем буду я, а не вы. :)
luckyleo769
> Открытость не влияет на качество, а закрытость не влияет на популярность.
Для мелких проектов - влияет, вот UE мало кто весь расковыряет)
> У меня встречный вопрос, ты смотрел примеры?
Да. Они не показывают реальное использование. Где стриминг данных без блокировок и нестабильности фпс? Где многопоточка?
Почему часто используется upload буфер, непонятно что там внутри: RAM или VRAM, если VRAM то ее всего 256Мб у меня на NV и ее легко переполнить, если RAM, то это нехорошо для производительности.
Тема в архиве.