Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

DirectX Backbuffer in Surface kopieren

Yves3 / 4 Antworten / Baumansicht Nickles

hallo


ich möchte den backbuffer in ein surface kopieren. funktioniert das so?


m_lpD3DDevice->StretchRect(m_lpBackBuffer,0,m_lpBuffer,0,D3DTEXF_NONE);


fehlermeldungen gibt es keine, es funktioniert aber auch nicht wie erwartet. das leigt veilleich aber auch an etwas anderem.


ich bin noch anfänger und hoffe, dass das mir hier jemand schnell sagen kann.


vielen dank!!

bei Antwort benachrichtigen
PaoloP Yves3 „DirectX Backbuffer in Surface kopieren“
Optionen

also ich bin nur mit DirectX 7 vertraut, da gab jede Funktion einen HRESULT-Wert
mit DD_Irgendwas zurück. Was gibt denn die Funktion genaus zurück? DD_OK ?

Das scheint hier ein StretchBlt zu sein der Hardware-abhänging ist, wie gesagt war zumindest alles in DX7 so. Da gibt es einen Caps-Viewer im Direct-SDK das du auf jeden Fall drauf haben solltest für deine DX-Version, da findest du auch diverse Beispielprogramme.

Ansonsten kommt vielleicht noch ne andere Antwort ;-)

Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen
Yves3 Nachtrag zu: „DirectX Backbuffer in Surface kopieren“
Optionen

sorry hab mich nicht ganz deutlich ausgedrückt.
mit "normalen" surfaces funtioniert das.
es funktionier auch, wenn ich ein surface in den backbuffer kopiere.
ich weiss nur nicht genau ob man damit auch den backbuffer in eine andere oberfläche kopieren kann.

ich werde das ganze jetzt sowieso etwas anders aufbauen, weil mir in der zwischenzeit noch ein effizienterer lösungsansatz eingefallen ist.
(für das scrolling in einem kleinen game)

nochmal danke für deine antwort!

bei Antwort benachrichtigen
PaoloP Yves3 „sorry hab mich nicht ganz deutlich ausgedrückt. mit normalen surfaces...“
Optionen

wie schon gesagt ich kenn's nur von dx7 und der backbuffer ist da im grunde eine surface wie jede andere auch. im fenster-modus sowieso, da ist es eine normale offscreen-surface und wenn du im fullscreen-modus mit flipping arbeitest ändert sich auch nicht viel da dx sich um alles kümmert, das sollte problemlos funktionieren.
das ist jetzt rein intuitiv aber bei einem StretchBlt wie das da einer zu sein scheint musst du die RECT-Angaben schon ordentlich gefüllt mit übergeben, das sieht so aus als du ob du Parameter 2 und 4 weglässt und nur 0 übergibst. ich vermute da gehören ordentlich gesetzte RECT-Angaben hin so das die Funktion weiss wie sie das gestrecht blitten soll, das kannst du nur bei einfachen Blt's getrost auslassen. ich hoffe das war jetzt nicht zu durcheinander ;-)

Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen
Yves3 PaoloP „wie schon gesagt ich kenn s nur von dx7 und der backbuffer ist da im grunde eine...“
Optionen

0 heisst, dass das der ganze buffer verwendet werden soll. (in diesem fall den ganze backbuffer in den anderen buffer kopieren)

bei Antwort benachrichtigen