2008-10-15 3 views
1

У меня есть зрелые приложения MFC C++, которые отображаются на экране и печатаются с использованием обложек CDC на Win32 GDI. Хотя на протяжении многих лет он был оптимизирован, я хотел бы заменить его чем-то более быстрым. Графика включала в себя модели треугольной поверхности, сложные полилинии и многоугольники, а также много текста. Он должен отвечать следующим критериям;Быстрая библиотека для замены векторной графики CDC

  • Количество отображаемых векторов, вероятно, будет очень большим. Например, один треугольник на поверхности может генерировать ряд строк и сплошное заполнение при визуализации. В настоящее время эта информация не хранится нигде, она генерируется и нарисована «на лету». SDK должен поддерживать ограничение общего количества буферизованных векторов или может закончиться нехваткой памяти.

  • SDK должен иметь возможность визуализировать любой производный класс CWnd, включая классы CView и ScrollView.

  • В SDK должна поддерживать печать на любых печатных устройств Windows,

  • В SDK должен быть низкий уровень достаточно, чтобы сделать порт от низкого уровня CDC/GDI требует относительно проста.

  • Открытый исходный код всегда хорош, но стоимость одного варианта до $ 2k, с дополнительными обновлениями/поддержкой также будет в порядке. Стоимость лицензии для каждого пользователя недопустима,

  • Доступ к исходному коду будет большим бонусом, в частности, с идеей запуска частей SDK на Windows CE/Mobile.

  • В настоящее время я обрабатываю свое собственное управление 3d-адресами 3d-2d. Если достойный низкоуровневый SDK недоступен, SDK более высокого уровня должен хорошо работать с 3D и работать с миллионами треугольников, полигонов и текстовых объектов на 32-битной платформе Windows.

Любые предложения? Признание конкретных плюсов и минусов в предлагаемом вами предложении было бы весьма полезным.

ответ

1

Я оценил FastGraph (http://www.fastgraph.com) для проекта. Мне понравилось это в небольших тестовых программах, которые я написал, это было очень быстро. Мы не использовали его по внешним причинам (ничего общего с библиотеками, которые я оценил), поэтому у меня больше нет практического опыта.

+0

Спасибо за ссылку. Я использовал FastGraph для DOS много лет назад и мне понравилось в то время. Не думал, что это все еще вокруг. – 2008-10-15 12:37:34

2

Я думаю, что DirectX или SDL подойдут вашим потребностям. Они предназначены для 3D, но работают и для 2D. Обе поддержки Windows CE/Mobile и SDL также доступны для группы не-Microsoft OS.

К сожалению, непосредственная совместимость с GDI не поддерживается в библиотеках. Но вы можете сделать трюк, создав класс конвертера, который будет принимать все выходные графики из ваших классов приложений, разработанных GDI, и преобразовывать формат в соответствии с потребностями классов DirectX или SDL (в зависимости от того, что вы хотите использовать).

Лично я сделал такой конвертер класс один раз. У меня была игра, написанная для Pocket PC, с использованием SDL, и мне нужно было перенести ее на устройство Palm. Там мне пришлось использовать другую графическую библиотеку (я не помню имя lib сейчас), но мне удалось перенести все функции SDL в формат, необходимый другой lib. Мне нужно было изменить свое приложение, чтобы вызвать функции конвертера (обертки), которые переадресовывают вызов в Palm или Pocket PC, в зависимости от того, какое устройство оно в настоящее время работает. Поэтому я думаю, что вы можете сделать то же самое для преобразования GDI -> DirectX или GDI -> SDL.

+0

Может ли поддерживать печать? – Aardvark 2008-10-16 12:30:11

Смежные вопросы