Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.249.247] |
|
Сообщ.
#1
,
|
|
|
Товарищи, просветите, как получить снимок экрана работающего directx приложения (к примеру какой то игры).
Нашёл несколько примеров, которые хорошо делают скриншоты рабочего стола, но на directx обламываются. Вот один из примеров, которые обламываются: void D3Screen(){ IDirect3D9 *g_pD3D; HWND hWnd; IDirect3DDevice9 *g_pd3dDevice; IDirect3DSurface9 *pSurface; D3DDISPLAYMODE d3ddm; D3DPRESENT_PARAMETERS d3dpp; hWnd=GetConsoleWindow(); if((g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)) == NULL) { printf("fail 1"); } if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm))) { printf("fail 2"); } ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETERS)); d3dpp.Windowed = TRUE; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat = d3ddm.Format; d3dpp.BackBufferHeight = d3ddm.Height; d3dpp.BackBufferWidth = d3ddm.Width; if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pd3dDevice))) { printf("fail 3"); } // кердык if(FAILED(g_pd3dDevice->CreateOffscreenPlainSurface(d3ddm.Width, d3ddm.Height, D3DFMT_A8R8G8B8, D3DPOOL_SCRATCH, &pSurface, NULL))) { printf("fail 4"); } g_pd3dDevice->GetFrontBufferData(0, pSurface); D3DXSaveSurfaceToFile(L"c:\\temp\\game.bmp",D3DXIFF_BMP,pSurface,NULL,NULL); pSurface->Release(); } Обламывается на вызове метода CreateOffscreenPlainSurface. |
Сообщ.
#2
,
|
|
|
тут код
Захват из DirectX |
Сообщ.
#3
,
|
|
|
ыыы... спасибо. Попробую для начала откомпилировать.
|