Быстрая библиотека для замены векторной графики CDC - PullRequest
1 голос
/ 15 октября 2008

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

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

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

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

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 15 октября 2008

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

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

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

1 голос
/ 15 октября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...