Я хотел бы получить необработанные данные изображения, как в указанном на массив байтов или что-то в этом роде, вывода изображения из приложения direct3d без фактического рендеринга его на монитор.

Мне нужно сделать это, чтобы я мог отображать direct3d как исходный фильтр directshow.

Visual studio 2008 c ++

1
Mr Bell 8 Июн 2010 в 00:22

2 ответа

Лучший ответ

Создайте поверхность, на которой вы собираетесь выполнить рендеринг, как экземпляр IDirect3DSurface9. Установите его в качестве цели для рендеринга с помощью IDirect3DDevice9::SetRenderTarget.

1
Jerry Coffin 8 Июн 2010 в 00:42
Короче говоря, я бы вызвал setrendertarget при инициализации, а затем после рендеринга каждого кадра. LockRect, чтобы получить D3DLOCKED_RECT, который предоставит мне указатель на байты изображения? Это в двух словах?
 – 
Mr Bell
8 Июн 2010 в 00:49
Да, и вызов setrendertarget предотвратит его отображение на экране, да?
 – 
Mr Bell
8 Июн 2010 в 00:51

Вы также можете заблокировать задний буфер.

0
Puppy 8 Июн 2010 в 00:36
Я не очень хорошо знаком с d3d. Как мне заблокировать задний буфер, чтобы получить данные о пикселях?
 – 
Mr Bell
8 Июн 2010 в 06:34