![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
Необходимо вывести на экран около 2-х миллионов линий, используется GDI.
все это рисуется через Polyline или через PolyPolyline. вообщем и целом что то типа ГИС. теперь вопросы: 1.Может в GDI уже есть какие то оптимизации например на большом увеличении отсечение всего, что не попало в "кадр", на большом отдалении например рисуются не все линии, а через одну т.к. все равно ничего не видно(если есть то как это называется). 2.От чего зависит производительность? только от процессора? или есть все таки какое то ускорение от видеокарты? 3.На крайний случай можно ли переписать все это на opengl(даже не на чистом, а скорее взять glut или еще чего) +учитывая то что всё завязано на MFC и GDI и как в этом случае будет использоваться железо? |
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 2 Всего: 17 |
Забудь про GDI. Это будет очень медленно. Оптимизаций вроде BSP-деревьев как в QGraphicsView из Qt там нет. Большинство операций аппаратно не ускорено (зависит еще от того, под какой ОС это работает). С помощью OpenGL конечно рисовать можно, особенно если не нужно сглаживание примитивов, клиппинг геометрии и тому подобные вещи. Но лучше бери специализированные библиотеки типа libagg или cairo. Либо Direct2D, если на поддержку Windows XP можно положить.
|
|||
|
||||
mrgloom |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 829 Регистрация: 8.6.2011 Репутация: нет Всего: нет |
можно ли как то рисовать линии через Opengl, используя контекст MFC CDC?
|
|||
|
||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: 1 Всего: 10 |
Собственно, на Windows, до Vista, GDI ускоряется аппаратно. В Аеро отрисовка происходит силами процессора, и там логичнее использовать Direct2D.
-------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 2 Всего: 17 |
||||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |