mrgloom 242 Жалоба Опубликовано June 15, 2011 Необходимо вывести на экран около 2-х миллионов линий, используется GDI. все это рисуется через Polyline или через PolyPolyline. вообщем и целом что то типа ГИС. теперь вопросы: 1.Может в GDI уже есть какие то оптимизации например на большом увеличении отсечение всего, что не попало в "кадр", на большом отдалении например рисуются не все линии, а через одну т.к. все равно ничего не видно(если есть то как это называется). 2.От чего зависит производительность? только от процессора? или есть все таки какое то ускорение от видеокарты? 3.На крайний случай можно ли переписать все это на opengl(даже не на чистом, а скорее взять glut или еще чего) +учитывая то что всё завязано на MFC и GDI и как в этом случае будет использоваться железо? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано June 15, 2011 Надо сказать, что GDI по-разному работает в XP/Vista/7, с включённым и выключенным Aero. Самая медленная и неудачная реализация в Висте. Аппаратное ускорения GDI поддерживает только для операций блитинга (BitBlt, StrenchBlt и т.п.). Рисование линий к ним не относится. Я бы использовал DirectX или OpenGL: и проще, и быстрей, и удобней. Поначалу может быть просто непривычно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано June 15, 2011 да я теоретически не против Opengl, но вопрос в том как его встраивать в MFC и надо ли переписывать все процедуры на GDI или например только рисование линий. скажем можно использовать тот же CDC контекст когда отрисовываем через Opengl, который поступает в функцию draw? + еще вопрос как можно замерять производительность? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано June 15, 2011 Да, все процедуры с выводом надо будет переписать. Самый лучший способ замера производительности - это профайлер (например, VTune). Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано June 16, 2011 а что теперь используют вместо Glaux.lib? или можно и ее использовать? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано June 16, 2011 Классический набор для программирования OpenGL графики: glaux.lib opengl32.lib glew32.lib glu32.lib glut.lib Его обычно достаточно для любых задач. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано December 27, 2012 Надо сказать, что GDI по-разному работает в XP/Vista/7, с включённым и выключенным Aero. Самая медленная и неудачная реализация в Висте. Аппаратное ускорения GDI поддерживает только для операций блитинга (BitBlt, StrenchBlt и т.п.). Рисование линий к ним не относится. а какую то официальную информацию можно почитать по этому поводу? нашел вот статью, судя по этому обзору с аппаратным ускорением рисуются быстрее только треугольники. http://www.thg.ru/graphic/obzor_amd_radeon_hd7970/obzor_amd_radeon_hd7970-07.html и не очень понятно какие методы сравниваются что значит выводится "напрямую"? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано December 27, 2012 Думаю где то здесь:Direct2D vs GDI Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах