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

Sven

Frischling

  • »Sven« ist der Autor dieses Themas
  • Private Nachricht senden

1

23.10.2003, 16:06

Backbuffer in ein Fenster malen

Ich arbeite gerade an einem Modeleditor für meine Engine. Das Fenster in welches eine Bildvorschau in Echtzeit angezeigt werden soll ist in der Größe veränderbar und soll es auch bleiben.

Mein Problem:
Wie passe ich die Backbuffergröße der Fenstergröße an, damit keine Verzerrungen entstehen können? Oder gibt es eine andere Möglichkeit?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

23.10.2003, 17:07

Du könntest das Direct3D-Device bei jeder Größenänderung neu erstellen und auf die neue Größe anpassen.

Sven

Frischling

  • »Sven« ist der Autor dieses Themas
  • Private Nachricht senden

3

23.10.2003, 19:03

Ich habe es gerade mit der Reset()-Methode versucht. Danach wird aber nichts mehr gerendert -> schwarzes Bild!

4

23.10.2003, 19:10

Ich weis zwar nicht wie es bei DX9 der fall ist, aber bei DX8 werden alle Interfaces z.B. VertexBuffer gelöscht, und müssen nach dem Reset neu aufgebaut werden.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

23.10.2003, 20:26

Ja, das ist leider immer noch so. Wie ich das hasse...

6

23.10.2003, 20:40

Ich frag mich warum es diese Methode überhaupt gibt. Wenn ich doch eh alles wieder neu machen muss. Dann kan ich auch gleich das Device neu erstellen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

7

24.10.2003, 12:05

Vielleicht dient diese Methode dazu, dass man das Device leeren kann, um es später freigeben zu könne?.

???

8

24.10.2003, 12:42

Wenn dem so ist, hat die Methode den falschen Namen. KillDevice wäre dann wohl besser gewesen :) Naja irgend so ein Einfallspinsel bei MS wollte halt eine Reset-Methode haben ;D
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

9

24.10.2003, 13:05

tsss, immer diese MS-Freaks :-D :-D
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

Sven

Frischling

  • »Sven« ist der Autor dieses Themas
  • Private Nachricht senden

10

25.10.2003, 15:08

Ich habe jetzt eine Funktion geschrieben (jweils fur Vertex- und IndexBuffer) welche den jeweiligen Buffer in den BackupModus schalten kann und auch ungekehrt.

Leider habe ich nach wie vor nur ein schwarzes Bild, sobald die Funktionen aufgerufen werden.

Ich dieser Funktion passiert nichts anderes, al das ein Speicherbereich reserviert wird und die Daten des Vertex-/Index-Buffers in diesen Speicherbereich kopiert wird. Der Pointer wird solange aufgehoben, bis die Funktion erneut auggerufen wird und der ganze Prozess rückwärts läuft.

Das ganze kann man sich so vorstellen:

CVertexBuffer.Backup(TRUE);
CIndexBuffer.Backup(TRUE);
C3D.UpdateBackBuffer(dwWidth, dwHeight);
CVertexBuffer.Backup(FALSE);
CIndexBuffer.Backup(FALSE);

Ist es mit den neufüllen der Buffer nicht getan? Was habe ich vergessen?

Werbeanzeige