Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

30.03.2012, 16:35

ID2D1RenderTarget Größe ändern

Wie schon in Titel zu sehen, würde ich gern die Größe eines ID2D1RenderTarget ändern.
Zum Verständnis:
Ich programmiere ein 3d-Spiel mit Directx 11 und haben nun Zwecks Textdarstellung ein Shared Surface zwischen DX 10 und 11 um DirectWrite zu nutzen (ziemlich genau wie in diesem Tutorial).
Nun bin ich zu dem Punkt gekommen, das ich machen wollte, das man die Fenstergröße des Programms beliebig ändern kann. Die Größenänderung vom 3d-Teil war kein Problem, nur bei dem entsprechenden D2D teil habe ich Probleme. Ich habe bisher 2 Dinge ausprobiert, die aber alle nicht wirklich funktionieren. Zum ersten habe ich erstmal gar nichts geändert und damit erreicht, das der Text und die Bitmaps natürlich entsprechend der Größenänderung verzerrt werden. Als zweites habe ich dann ausprobiert einfach alles neu zu initialisieren, allerdings habe ich dann das Problem, das sämtliche Bitmaps und Brushes etc noch mit dem alten RenderTarget verbunden sind (jedenfalls vermute ich, dass das Problem ist). Die Normalen Formen (ala FillEllipse) funktionieren auch hinterher, doch die sind ja nicht mit dem RenderTarget verknüpft, doch die Bitmaps läd man ja direkt über das RenderTarget.

Die erste Lösung wird wohl kaum funktionieren, da das Ergebnis ja erwartbar war und wohl auch nicht anders möglich ist.
Also muss die zweite Lösung die Richtige sein (wohl in abgeänderter Form).

Somit jetzt meine Frage:
Gibt es eine Möglichkeit die Größe des RenderTarget direkt zu ändern (bzw. die Bitmaps irgendwie zu übertragen)? Denn ich habe keine Lust (und ich bezweifle, dass das bei vielen Bitmaps performant hinzubekommen ist) alle Bitmaps neu zu Laden. Bei Directx11 gibt es ja IDXGISwapChain::ResizeBuffers(), gibt es sowas auch hier, oder sieht jemand eine andere Lösung?

Vielen Dank schonmal für eure Mühe
MfG
Chelterrar