У меня есть поверхность (OffScreenPlain или RenderTarget с D3DFMT_A8R8G8B8), с которой я копирую пиксели (ARGB) в функцию третьей стороны. Перед копированием пикселей доступ к битам осуществляется LockRect.D3D9 Alpha Blending на поверхностях
Эта поверхность представляет собой StretchRect для Backbuffer, который является (D3DFMT_A8R8G8B8). Поверхность и бэкбуффер - разные размеры. Фильтрация установлена на D3DTEXF_NONE.
Сразу после создания устройства d3d я установил следующие RenderState настройки
D3DRS_ALPHABLENDENABLE -> TRUE
D3DRS_BLENDOP -> D3DBLENDOP_ADD
D3DRS_SRCBLEND -> D3DBLEND_SRCALPHA
D3DRS_DESTBLEND -> D3DBLEND_INVSRCALPHA
Но я не вижу альфа-смешивание не происходит. Я проверил, что альфа задана в пикселях.
Я проделал простой тест, создав буфер вершин и нарисуя треугольник (DrawPrimitive), который отображает с альфа-смешиванием.
На этой тестовой поверхности сначала был StretchRect, а затем DrawPrimitive, а поверхностное содержимое отображается без альфа-смешивания, а треугольные дисплеи с альфа-смешиванием.
Что мне здесь не хватает? Спасибо