Вот такая проблема: Нужен быстрый блиттинг в 2D. В Dx7 были функции типа IDirectDrawSurface7->Blt, ->BltFast, и им подобные. В Dx9 поверхности остались, есть способ читать/писать (StretchBlt, D3DXLoadSurfaceFromSurface, Update), но не ясно, как выводить картинки с колор-кеем или по маске. В LoadSfromS есть параметр ColorKey, но в результате его работы область, которая должна была остаться чистой, выводится именно цветом ключа. Возможно, нужно настроить "прозрачный" цвет на поверхности-приемнике, но где? Можно получить HDC поверхности, и блиттить с помощью Windows GDI, но на хрена тогда DirectX?

А можно, например, получить адрес поверхности и вообще писать прямо в память по байтам. Но опять таки, зачем тогда Dx.
В общем, подскажите, как вывести картинку сложной формы в BackBuffer в Dx9, не используя при этом 3D? И какой способ будет самым эффективным?
Спасибо.