![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как снять программно скриншот с экрана в FullScreen DirectX?
AlexT1000 © (2003-10-02 12:26:00)И сохранить его как кусок памяти.
Sapersky (2003-10-04 11:47:00) [1]как создать сюрфасе
IDirect3DDevice8.CreateImageSurface
Или использовать IDirect3DDevice8.GetBackBuffer, там вроде создавать поверхность не надо (возвращается указатель на существующий surface).
AlexT1000 (2003-10-03 14:23:00) [2]указывал и 1 . нифига
а вот из второй части вреде следует , что типа нужно всетаки эту поверхность создать.
Не могу найти функцию ,которая создает сюрфасе. вчера нашел но не помню как называется. как создать сюрфасе?
NailMan (2003-10-03 13:24:00) [3]Точно не помню(исходники с игрой дома), но вроде надо либо создать эту поверхность(а мож и не надо), или номер swapchain указывай не 0, а 1.
И еще не стоит забывать, что:
"For windowed mode, the size of the destination surface should be the size of the desktop. For full-screen mode, the size of the destination surface should be the screen size."
AlexT1000 (2003-10-03 12:00:00) [4]Делаю так ,
IDirect3DSurface9* DestSurface =NULL;
if (m_pd3dDevice->GetFrontBufferData(0,DestSurface) == D3DERR_INVALIDCALL)
{
return ;
}
но мне все время выдает эту ошибку D3DERR_INVALIDCALL не пойму что я делаю не так?!
cyborg (2003-10-02 16:57:00) [5]Да, нужно заметить, что [1] cyborg © (02.10.03 15:22) для DirectDraw.
NailMan (2003-10-02 16:18:00) [6]Если в D3D, то
var DestSurface:IDirect3DSurface8;
IDirect3DDevice8.GetFrontBuffer(DestSurface);
D3DXSaveSurfaceToFile('xxx.bmp',D3DXIFF_BMP,DestSurface,nil,nil);
Канает только с заголовками d3d 8.1 и выше.
если ddraw то нынаю - гемор наверно.
cyborg (2003-10-02 15:22:00) [7]Surface.Lock
TDDSurfaceDesc.lpSurface возвращаемое функцией будет содержать адрес графических данных, их и сливай.