Re[7]: Чем рисовать WAV ?
От: Lopcom  
Дата: 24.04.04 08:03
Оценка:
L>>По поводу скорости:
L>>Как я уже сказал, лучше использовать прямое обращение к памяти, то-есть работать с DIBSECTION.
L>>Такие функции, как SetPixel/GetPixel и тот же Polyline, очень медленные при работе с DC (любым, здесь нет разницы MemoryDC это или нет).

P> Т.е. совсем нет? Откуда дровишки?


При чём тут дровишки?
Я про то, что подсистема Win32 (Csrss.exe) находится в ядре в Win2000.
И при вызове SetPixel вверху стэка происходит прерывание ("int 0x2e" для x86), срабатывает ловушка (trap), которая заставляет выполняемый поток переключиться в режим ядра и войти в диспетчер системных сервисов, а далее по номеру (регистр EAX) вызывается уже сам системный сервис, то-есть обработчик для SetPixel внутри Csrss.exe. Так вот, вся эта операция очень ресурсоёмкая, особенно переключение в режим ядра. А потому работать попиксельно через SetPixel с графикой очень неэффективно.

L>>Каждый раз когда вызывается SetPixel, происходит переход в режим ядра, где уже обрабатывается сама прорисовка.

L>>Такое переключение на каждый пиксел очень ресурсоёмко. Polyline, подозреваю, просто делает серию вызовов SetPixel со всеми вытекающими.

P>Разве что только на совсем древних карточках, да и то вряд-ли...


При чём тут карточки? См. выше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.