Чем и как быстро парсить .obj на с++ (библиотеки, методы)?
Чем и как быстро парсить .obj на с++ ? Видел много примеров но всё упирается в скорость, к примеру мой парсер выполняет загрузку модели из 24 000 полигонов примерно за 3 минуты(0_0). Использую регулярные выражения.
Не используйте регулярные выражения.
Парсите не из файла, а загрузив весь файл в память.
У obj линейный, детерминированный формат, можно хоть switch (большой, длинный, некрасивый, но быстрый) написать.
Мне не хватает именно инструментария для разбора строки, а именно определения что в ней лежит и конвертация строк в числа. Возможно есть какие паттерны или даже готовые библиотеки для такого. В какую сторону смотреть и какие функции использовать если для таких имеет место быть ?
MicroSDA: считываешь строковый токен, через if-elseif-else выбираешь нужный блок кода. В нём считываешь слова/числа в зависимости от того, что в блоке может храниться. Как я уже писал, лучше предварительно загрузить весь файл в память, тогда можно будет использовать сишные функции substr и прочие. atoi - для преобразования строки в число.
Единственная сложность - переменное число аргументов. Например, для точки может быть xyz или xyzw. Т.е. считывать нужно до конца строки столько аргументов, сколько получится.
Там нужен примитивнейший парсер, указанный объём будет за секунды обрабатывать.