Быстрая библиотека для замены векторной графики CDC

StackOverflow https://stackoverflow.com/questions/203847

Вопрос

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

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

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

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

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

  • Открытый исходный код - это всегда приятно, но единовременная стоимость, скажем, до 2 тысяч долларов, с дополнительными обновлениями / поддержкой также была бы в порядке вещей.Стоимость лицензии на одного пользователя неприемлема,

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top