Здравствуйте, Lopcom, Вы писали:
L>>>По поводу скорости:
L>>>Как я уже сказал, лучше использовать прямое обращение к памяти, то-есть работать с DIBSECTION.
L>>>Такие функции, как SetPixel/GetPixel и тот же Polyline, очень медленные при работе с DC (любым, здесь нет разницы MemoryDC это или нет).
P>>
Т.е. совсем нет? Откуда дровишки?
L>При чём тут дровишки?
Откуда сведения — так понятнее?
L>Я про то, что подсистема Win32 (Csrss.exe) находится в ядре в Win2000.
Вообще то мы рассматриваем графическую подсистему. Которая уже давно не часть подсистемы Win32.
Конечно, вне всякого сомнения, win32k.sys выполняется в режиме ядра.
[]
L>А потому работать попиксельно через SetPixel с графикой очень неэффективно.
Вне всякого сомнения. Я оспариваю
здесь нет разницы MemoryDC это или нет
В случае, если поверхность находиться под управлением GDI (напр. для стандартных форматов DIB), то драйвер вообще может не учавствовать в обработке большинства граф. операций, не говоря уж о том, чтобы непосредственно обращаться к видеоадаптеру.
L>>>Каждый раз когда вызывается SetPixel, происходит переход в режим ядра, где уже обрабатывается сама прорисовка.
К слову сказать, сие происходит в большинстве случаев, не только при вызове SetPixel.
L>>>Такое переключение на каждый пиксел очень ресурсоёмко. Polyline, подозреваю, просто делает серию вызовов SetPixel со всеми вытекающими.
P>>Разве что только на совсем древних карточках, да и то вряд-ли...
L>При чём тут карточки? См. выше.
Не думаю, что на сегодняшний день существуют реализации Polyline via SetPixel.
Вывод линий давным давно уже сделан аппаратным, как впрочем и большинства 2d графики.
Кстати, вообще не понимаю, на кой хрен ее реализовывать via SetPixel, когда можно LineTo?
Или ты под SetPixel понимаешь не API ф-ю SetPixel, а установку пиксела как таковое?