[DX] Surface auf Monitor blitten
-
Hallo,
wie ist es möglich, eine LPDIRECT3DSURFACE8 auf den Montior zu bringen? Meine Idee wäre gewesen, mit GetRenderTarget eine Zielsurface zu holen und mit CopyRects dadrauf. Geth aber irgendwie nicht... mein Versuch sah so aus:
LPDIRECT3DSURFACE8 lpDDS; lpDevice->CreateImageSurface(25, 40, D3DFMT_A8R8G8B8, &lpDDS); D3DXLoadSurfaceFromFile(lpDDS,NULL,NULL,"C:\\Untitled_0001.png",NULL,D3DX_DEFAULT, 0, NULL); LPDIRECT3DSURFACE8 lpRT; ... // In der Hauptschleife: RECT rc; rc.bottom = 40; rc.left = 0; rc.right = 25; rc.top = 0; POINT pos; pos.x=40; pos.y=40; lpDevice->GetRenderTarget(&lpRT); lpDevice->CopyRects(lpDDS,&rc,1,lpRT, &pos);
Aber ich sehe auf dem Monitor nichts, kompiliert wird es aber anständig...
[ Dieser Beitrag wurde am 14.02.2003 um 19:48 Uhr von Phobos editiert. ]
-
Damit die Veränderungen im Back-Buffer sichtbar werden, musst Du erst IDirect3DDevice8::Present aufrufen.
-
Am Ende der Hauptschleife hab ich das ja auch (nach EndScene). Ist das da falsch oder so?
-
Ist das nicht recht langsam!?
-
Was ist langsam? Present aufzurufen? Gibt's da was schnellers?
-
Wenn Du das Render-Target abfragst, wird der Referenzzähler erhöht. Also nachher wieder Release aufrufen.
-
Original erstellt von Phobos:
Was ist langsam?CopyRects
[ Dieser Beitrag wurde am 17.02.2003 um 10:31 Uhr von TGGC editiert. ]