Ответы с форумов MSDN

Копирование содержимого окна на поверхность Direct3D

Date: 04.06.2020 10:42:01

Да, можете, почему бы и нет? Например так:

	IDirect3DSurface9 *surface = nullptr;
	device->CreateOffscreenPlainSurface(W, H, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &surface, nullptr);

	IDirect3DSurface9 *buffer = nullptr;
	device->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &buffer);

	HDC targetdc = NULL;
	surface->GetDC(&targetdc);

	HDC scrdc = GetDC(srcwnd);

	BOOL res = BitBlt(targetdc, 0, 0, W, H, scrdc, 0, 0, SRCCOPY);
	ReleaseDC(srcwnd, scrdc);
	surface->ReleaseDC(targetdc);

	device->UpdateSurface(surface, NULL, buffer, NULL);
	device->Present(NULL, NULL, NULL, NULL);

где device - указатель на устройство IDirect3DDevice9 *

srcwnd - окно, которые вы копируете

W,H - ширина и высота копируемого фрагмента

изображение 1200х800 копируется за 17-18 мс


Автор: VadimTagil

Главная страница - Список тем - Репозиторий на GitHub