Rubrik: Grafik und Font · DirectX | VB-Versionen: VB5, VB6 | 18.12.02 |
Screenshots in Direct3D So machen Sie einen Screenshot von ihrer Direct3D-Anwendung ohne auf externe Programme angewiesen zu sein! | ||
Autor: illuminator | Bewertung: | Views: 17.533 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Diese Funktion erstellt Screenshots mit fortlaufendem Index.
Die Funktion selbst sollte zwischen Device.EndScene und Device.Clear aufgerufen werden, da man sonst einen Screenshot von einer unvollständig gezeichneten Szene bekommt.
' Das ist die Fuktion die wir aufrufen Public Function MakeScreenShot() ' Alles nötige deklarieren Dim FrontBuffer As Direct3DSurface8 Dim PE As PALETTEENTRY Dim rt As RECT Dim tmpSD As D3DSURFACE_DESC ' Den FrontBuffer des RenderDevice holen, ' also die gezeichnete Szene Set FrontBuffer = Device.GetRenderTarget ' Diese Variable brauchen wir um den ' Screenshot-Index zu setzen Static ScreenShotCount As Long ' Die benötigten Infos über das RenderDevice ' holen ( Höhe und Breite) FrontBuffer.GetDesc tmpSD With rt .bottom = tmpSD.Height - 1 .Left = 0 .Right = tmpSD.Width - 1 .Top = 0 End With ' und abspeichern D3DX.SaveSurfaceToFile App.Path & "\ScreenShot" & _ CStr(ScreenShotCount) & ".bmp", _ D3DXIFF_BMP, FrontBuffer, PE, rt ' Screenshot-Index um 1 erhöhen ScreenShotCount = ScreenShotCount + 1 End Function