Иван Кузьмицкий писал(а):
С первого взгляда полтора года безрелизья AGG показались спадом... Так значит, AGG перешёл в фазу почти идеального состояния
Вроде кто-то переносил AGG на Оберон, или я ошибаюсь?
Я переносил.
Не хотелось рассказывать до релиза, но, поскольку вопрос поднят, расскажу.
Перевожу не на ВВ, а на XDS. Думаю, что для тех, кто разбирается в ВВ проблем с переводом не будет.
На сегодняшний день переведен на Oberon весь "конвейер" обработки (собственно конвейера там нет, там цепочка rendering buffer - pixel formatter - renderer - rasterizer плюс вспомогательные модули). Непереведенными пока остались часть вспомогательных модулей - некоторые цветовые конвертеры, "заливщики", трансформаторы. Плюс надо отладить модуль поддержки операционной системы для того, чтобы можно было демки переписать. Сейчас я делаю свои "демки" чтобы вести перевод/отладку.
Сложностей там уже нет, нужно только время.
Перевод делается по версии 2.3 порта на Object Pascal. Версии 2.3 - 2.5 отличаются не сильно - ряд алгоритмов доработан, исправлено несколько мелких багов да добавлено несколько модулей. AGG развивается уже лет 8, так что стабильность действительно высокая.
Существенные изменения при переходе на Oberon:
- Оригинальная версия (C++ и ее порт на Object Pascal) используют одномерный массив(ы) и адресную арифметику. Это было заменено на двумерный динамический массив и индексную арифметику.
- Графические алгоритмы в самом своем низу опираются на понятие байта (в С++ - unsigned char, в ОР - byte). В XDS я это перевел в SYSTEM.CARD8. Соответственно, вся арифметика по цветовому преобразованию опирается на это (в коде модуля преобразования цвета много конструкций SHORT(LONG(...))).
После перевода нужны будут "редакторские правки". Необходимо будет выправить названия добавленных методов (в AGG очень активно используются overloaded-методы, чего, естественно, нет в Oberon'е) да просто провести чистку кода.