Создайте свою текстуру из видеокадра, а затем LockRect и скопируйте данные. Теперь у вас есть данные в текстуре D3D9.
Загрузка пиксельного шейдера проста. Используйте D3DXCreateEffectFromFile .
Визуализация квадрата с текстурой может быть легко изучена при просмотре любого учебника в Интернете. Попробуйте это:
http://www.drunkenhyena.com/cgi-bin/view_cpp_article.pl?chapter=2;article=30
Если вы установите его правильно, эффект будет автоматически применен к квадру.
Редактировать: При просмотре вашего кода выясняется, что вы не устанавливаете мир, вид или матрицы проекций. Также вы не устанавливаете свой видовой экран.
Во-первых, вы должны установить для них все матрицы на единицу. Это означает, что вершины, которые вы проходите, будут перемещаться по конвейеру без каких-либо изменений. Затем вам необходимо помнить, что пространство «проекции» изменяется от -1 до 1 (слева направо, снизу вверх).
Поэтому вам нужно определить ваш квад:
ver[0] = new CustomVertex.PositionTextured(-1, 1, 0, 0, 0);
ver[1] = new CustomVertex.PositionTextured(1, 1, 0, 1, 0);
ver[2] = new CustomVertex.PositionTextured(-1, -1, 0, 0, 1);
ver[3] = new CustomVertex.PositionTextured(1, 1, 0, 1, 0);
ver[4] = new CustomVertex.PositionTextured(1, -1, 0, 1, 1);
ver[5] = new CustomVertex.PositionTextured(-1, -1, 0, 0, 1);
Затем вам нужно установить свой видовой экран следующим образом (это набор видимости C ++, так как я не особо использовал C #):
D3DVIEWPORT9 vp;
vp.X = 0;
vp.Y = 0;
vp.Width = 1920;
vp.Height = 1080;
vp.MinZ = 0.0f;
vp.MaxZ = 1.0f;
pDevice->SetViewport( &vp );
В этот момент я ожидаю увидеть всю текстуру на экране.
Кстати, я также не совсем уверен, что вы делаете в SetTextureStageState ... Вы просто говорите "Выберите Arg1". Вы передаете эквивалент D3DTA_TEXTURE в COLOR ARG 1?