BingoBongo
> > так а раньше почему падало ?
> Потому что говно ваш С++, вот почему :)
дело было не в бобине
> Общий объем кода движка 22к строк.
Нормально, как пет-проект. Код либо нормальный, либо превращается в гад-блесс-говномесс. Примерно с таких метрик.
В написании гуя у меня какая-то вундервафля получается, решил посмотреть как у тебя.
Ты написал свой рендеринг шрифтов? о_О
Почему не взял freetype/rusttype/что-либо ещё?
Джек Аллигатор
> Ты написал свой рендеринг шрифтов? о_О
> Почему не взял freetype/rusttype/что-либо ещё?
У меня был свой загрузчик\рендерер\упаковщик шрифтов для сишного движка и я просто его портировал за день ¯\_(ツ)_/¯
Вообще я планирую перейти на freetype потому что у меня довольно слабенькая поддержка шрифтов.
не могу не потроллеть
>Почему раст?
>Надежность, скорость и безопасная многопоточность. C++ обеспечивает разве что скорость, ни о какой надежности и безопасной многопоточности там и речи нет.
>...раст же следит за тем что в программе нет гонок за данные (в то же время взаимную блокировку потоков можно получить на раз-два)...
как в голове могут быть взаимоисключающие вещи? - два полушария, ага
clc
я движками не занимаюсь, но объясните мне как это читать, если надо найти что-то?
https://github.com/mrDIMAS/rg3d/blob/master/src/renderer/gl.rs
у меня рука забилась пока я скролил это и пытался вникнуть что там происходит.
Pigloo, вот так: http://docs.gl/
Эти исходники не для чтения.
Pigloo
Это сгенерированные биндинги для опенгл.
mr.DIMAS
> Утечка не UB, поэтому раст допускает возможность ее создания (через кривые
> руки)
Часто ли у тебя возникала ситуация, когда данные не укладывались в парадигму владения/заимствования и приходилось использовать RC и подобное?
Да, и возникали ли ситуации, когда сначала было сделано на владении/заимстовании, а потом требовался глубокий рефакторинг на RC?
Dmitry_Milk
Было один раз всего и то на начальном этапе - ресурсы (модельки, текстуры, буферы звуков, и т.д.) изначально все лежали в пулах и я просто хранил хэндл ресурса там где требовалось, а потом если надо что-то из него прочитать я передавал в метод пул и хэндл нужного ресурса. Это оказалось жутко неудобно по одной простой причине - ресурс может быть разделяемым между многими объектами и должен быть удален если им никто не пользуется. Тут и пригодился Arc<Mutex<SomeResource>>, Arc - обычный shared_ptr из плюсов, а сам ресурс защищен мьютексом. Это единственное место в движке где активно используется Arc. В остальных места все объекты живут в пулах и "ссылки" на них это просто хэндлы.
mr.DIMAS
> объекты живут в пулах
borrow_N_mut не получилось без unsafe. Почему? mut доступ к одному элементу вектора блокирует весь вектор?
mr.DIMAS
> ресурс может быть разделяемым между многими объектами и должен быть удален если
> им никто не пользуется. Тут и пригодился Arc<Mutex<SomeResource>>, Arc -
> обычный shared_ptr из плюсов
В целом концепция "удалить сразу же как только никто не использует" - говно. Легко попасть в ситуацию: удалили / тут же загрузили обратно / удалили / тут же загрузили обратно. В идеале нужно прикручивать более "умный" менеджмент, который не будет сразу удалять объект при потере на него ссылок.
Dmitry_Milk
> Часто ли у тебя возникала ситуация, когда данные не укладывались в парадигму
> владения/заимствования и приходилось использовать RC и подобное?
часто, если логика меняется по несколько раз в день :) шутка
MrShoor
> В целом концепция "удалить сразу же как только никто не использует" - говно.
> Легко попасть в ситуацию: удалили / тут же загрузили обратно / удалили / тут же
> загрузили обратно.
ооооо, сразу виден большой практический опыт - путаница между объектами и содержимом