Здравствуйте, velkin, Вы писали:
V>Теперь, что касается связывания объектов: V>1. Во время компиляции (compile time) V>2. Во время исполнения (runtime)
V>Каждая парадигма реализует свои варианты связывания, да и объекты в данном случае условное понятие, скажем так это данные и методы работы с ними.
V>Object Management Group (OMG) и другие уже давно исследуют способы гибкого управления объектами, но если обобщить существуют всего два подхода:
V>1. Передача данных V>2. Передача методов
...
Есть ещё один способ — через компиляцию производных пользовательских классов во время исполнения основной программы с помощью встроенного компилятора.
Кстати, мне интересно попробовать именно этот способ для борьбы с комбинаторным взрывом.
Это делалось 7 лет назад.
Конечно есть ряд глюков и багов.
Если винда будет отчаянно бороться за свой курсор — то кликните в меню.
Чтобы хорошенько поиграться с демкой — прочитайте описание — Description.
Re[2]: Тензорная архитектура на примере интерактива
Здравствуйте, LVE, Вы писали: LVE>Нашёл одну из первых версий LikeView
Занятная игрушка.
Стресс-тесты делал?
Скажем, пару миллионов примитивов без анимации нарисовать сможет?
Что-то подобное рисовать можно?
Кусок платы
При работе с тяжелой графикой приходится оперировать с несколькими представлениями одних и тех данных. Скажем, пользователь редактирует объекты, которые лежат в структурах данных в, так сказать, исходном виде, при этом поиск выполняется в 2Д-(или 3Д-)хеше, а рисуются те же объекты, но в триангулированном виде, которые хранятся в виде массива вершин. И таких представлений могут быть десятки — зависит от решаемых задач.
Если в собственном движке все эти представления данных хорошо укладываются и выводятся одни из других, то как с этим обстоят дела в универсальных движках?
Вот в твоей архитектуре это учитывается? Её можно будет применить для рисования через OpenGL/DirectX?
Кстати, поделюсь опытом. В одном из проектов мой предшественник , которого покусал Александреску, применил Визитёра для работы с данными.
Всё было сделано так, как ты мечтал — никакого комбинаторного взрыва , все операции над объектами проходят через единственный метод, а в зависимости от визитёра, подсунутого в этот метод, мы получаем и поиск, и рисование, и формирование тултипов, и перебор объектов с какими-то трансформациями...
Но вот проблема в том, что такой приём хорош для лабораторной работы в институте. А в реальной жизни, когда число объектов выросло до пары тысяч вся программа встала колом. Потому что перебор через Визитёр вырождался в O(N^2). А уж отлаживать такой код — проще повеситься. Нам стоило немалых усилий, чтобы выпилить этот шлак и заставить работать как надо.
_____________________
С уважением,
Stanislav V. Zudin
Re[3]: Тензорная архитектура на примере интерактива
Здравствуйте, Stanislav V. Zudin, Вы писали:
LVE>>Нашёл одну из первых версий LikeView
SVZ>Занятная игрушка.
Спасибо.
SVZ>Стресс-тесты делал? SVZ>Скажем, пару миллионов примитивов без анимации нарисовать сможет?
В некотором смысле — да.
У сложных объектов — сделал буферизацию.
У сетки и хендлов — быстрый растровый вывод.
Так что это зависит от уровня рукожопости.
SVZ>Что-то подобное рисовать можно?
Без проблем. Была бы только объектная модель.
Для примера — нажмите Ctrl+D — это дебажная отрисовка.
SVZ>При работе с тяжелой графикой приходится оперировать с несколькими представлениями одних и тех данных. Скажем, пользователь редактирует объекты, которые лежат в структурах данных в, так сказать, исходном виде, при этом поиск выполняется в 2Д-(или 3Д-)хеше, а рисуются те же объекты, но в триангулированном виде, которые хранятся в виде массива вершин. И таких представлений могут быть десятки — зависит от решаемых задач.
Да. С графами работа отлажена через списки зависимых компонентов.
SVZ>Если в собственном движке все эти представления данных хорошо укладываются и выводятся одни из других, то как с этим обстоят дела в универсальных движках? SVZ>Вот в твоей архитектуре это учитывается? Её можно будет применить для рисования через OpenGL/DirectX?
Думаю, что здесь будет проблема с HitTest.
SVZ>Кстати, поделюсь опытом. В одном из проектов мой предшественник , которого покусал Александреску, применил Визитёра для работы с данными. SVZ>Всё было сделано так, как ты мечтал — никакого комбинаторного взрыва , все операции над объектами проходят через единственный метод, а в зависимости от визитёра, подсунутого в этот метод, мы получаем и поиск, и рисование, и формирование тултипов, и перебор объектов с какими-то трансформациями... SVZ>Но вот проблема в том, что такой приём хорош для лабораторной работы в институте. А в реальной жизни, когда число объектов выросло до пары тысяч вся программа встала колом. Потому что перебор через Визитёр вырождался в O(N^2). А уж отлаживать такой код — проще повеситься. Нам стоило немалых усилий, чтобы выпилить этот шлак и заставить работать как надо.
Тогда я тоже поделюсь опытом.
Во многих подобных иерархиях для компонента делают привязку на родителя или владельца.
Это отнимает внимание программиста на связку компонентов, не говоря уже про небольшой расход памяти.
А когда делаешь многостраничный вывод холста — то эти связки только мешают.
Тогда я поступил просто: Я делаю стек текущих компонентов в классе Контекста.
Экземпляр контекста я передаю в методы компонента при всяких иерархических обходах модели.
Получается так — с какой бы стороны я не зашёл в компонент, его метод знает историю обхода.
Здравствуйте, LVE, Вы писали:
LVE>Сейчас я вылез из норы. LVE>Я теперь понимаю, что в архитектурном новаторстве действительно отстал.
Ничего, нагоните. Если фундаментальная база есть — то нагоните быстро.
LVE>Однако если будет интерес к теме интерактивной библиотеки, то я готов к сотрудничеству.
Лично у меня нет потребности, но может кому-то и пригодится.
Небольшой совет: сделайте демо в виде видео, с красивыми картинками и примерами API. Может, кто-то заинтересуется.
Можно послать демо разработчикам разных ыизуальных компонентов, такая целевая реклама часто работает лучше.
Re[8]: Тензорная архитектура на примере интерактива
Здравствуйте, vmpire, Вы писали:
LVE>>Однако если будет интерес к теме интерактивной библиотеки, то я готов к сотрудничеству. V>Лично у меня нет потребности, но может кому-то и пригодится. V>Небольшой совет: сделайте демо в виде видео, с красивыми картинками и примерами API. Может, кто-то заинтересуется. V>Можно послать демо разработчикам разных ыизуальных компонентов, такая целевая реклама часто работает лучше.
Спасибо за добрые слова.
Однако Вы не поняли — библиотека уничтожена из принципиальных соображений.
Я здесь показал то, что случайно осталось.
Теперь всё надо начинать заново, если будет поддержка.
Немного о наболевшем.
Я не случайно наезжаю на Макса Шеманарёва и его agg.
1. Очень неудобно работать с agg.
Его шаблоны битмапов угнетают всю работу.
Лучше бы он менял указатели на функции, и грубо кастил указатели на данные.
2. Я уже писал о том, что не надо сортировать сканлайны.
Достаточно просто транспонировать вектор векторов.
Прирост производительности для кривых и полигонов — до 30%.
3. Создавать графические объекты на стеке — очень не эффективно.
Мне нужен корневой графический класс, чтобы я обновлял его производные только при необходимости.
4. Короче — у меня есть хорошая идея — сделать 2Д рисовалку и интерактив — в одном флаконе.
Re[8]: Тензорная архитектура на примере интерактива
Здравствуйте, vmpire, Вы писали:
V>Лично у меня нет потребности, но может кому-то и пригодится.
Вот именно!
На нахрапистых ура-инвесторов я уже не рассчитываю.
На наших чинуш — тем более.
Однако, лично мне интересно сделать эту тему как пошаговое образовательное руководство с целью получения оптимального результата.
Много денег не надо. Достаточно 20 тыс.р. в месяц. + Премии до 10 тыс.р.
Вот такая простая стратегия.
Re[8]: Тензорная архитектура на примере интерактива
Здравствуйте, LVE, Вы писали:
LVE>Немного о наболевшем. LVE>Я не случайно наезжаю на Макса Шеманарёва и его agg.
LVE>1. Очень неудобно работать с agg. LVE>Его шаблоны битмапов угнетают всю работу. LVE>Лучше бы он менял указатели на функции, и грубо кастил указатели на данные.
"Павшие сраму не имут". Нет Макса с нами больше.
LVE>2. Я уже писал о том, что не надо сортировать сканлайны. LVE>Достаточно просто транспонировать вектор векторов. LVE>Прирост производительности для кривых и полигонов — до 30%.
Генерировать scanlines где-либо кроме GPU и его shaders — себя не любить.
Re[3]: Тензорная архитектура на примере интерактива
Здравствуйте, c-smile, Вы писали:
CS>"Павшие сраму не имут". Нет Макса с нами больше.
Ну, пипец. Надеюсь, что он был счастлив и не мучился.
Теперь кто-то должен продолжать его дело.
Был проект по портированию AGG на C# — это имхо фигня.
Уж лучше его портировать на голый Си. Делать структуры, указатели на функции и грубые касты.
Потом уже, можно сделать интерфейс для C#.
Это как в Москву через Владивосток. Зато в производительности не проиграешь.
Надо специальную тему где-то открыть...
Я открыл тему:
Проекты — Открытые проекты — AGG жив и будет развиваться!