(31.08.2010 22:25)GrayFace Wrote: Да, потом создаются свои прокси IDirectDraw, IDirectDrawSurface и т.п., которые перекидывают с 16-битной поверхности на 32-битную.
Впринципе я это знал, я поковырял немного zdraw.dll, но для полного понимания решения чего то не хватало. Твой пост, sergroj, переключил в моей голове нужный триггер, спасибо!
(31.08.2010 22:25)GrayFace Wrote: Блиттинг используется через канвасы (HDC) поверхностей
Что это и как это, я не представляю. Сделал собственные функции конвертации из 16-битн. поверхности в 32 и обратно. Функции довольно грубые но шустрые. Неточность вычислений на глаз незаметна, и тормозов никаких на моем нетбуке нет.
Всего три сдвига и два AND'a на пиксель на конвертацию туда и три сдвига плюс два OR'а на конвертацию обратно. Никаких умножений и делений.
Однако, при размере окна близком к размеру экрана в моем патче у меня проявился абсолютно такой же глюк, что и в последней лучшей zdraw.dll.
Очевидно он появляется при блиттинге между 16 битными поверхностями при 32-битном режиме.
Т.е. свою задачу я не решил.. Попробую заменить и 16-битные директдро поверхности и функцию блиттинга своими структурами и кодом, посмотрим решит ли это проблему...