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

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

1

31.07.2007, 10:17

Frage zu Vertex- und Index-Buffern

Hi,


Wenn man einen Vertexbuffer sperrt erhält man ja einen Zeiger auf diesen buffer(So schreibt es jedenfalls david in der 2. auflage).
Das würde ja bedeuten, dass man direkt auf den grakaspeicher zugriff hat.

Ich dachte bisher, das einfach die daten des gesperrten bereichs in den RAM kopiert werden (von DX) und man sie dort verändert. Wenn man den buffer dann entsperrt, wird alles zurückkopiert.
Das Flag ...DISCARD bestätigt meine theorie ja eigentlich noch.
Weil wenn man den gesamten Speicher sowieso überschreiben muss, dann müssen die daten ja net erst vom grakaspeicher in den RAM kopiert werden, sondern nur andersrum beim entsperren.
Das würde auch den performancezuwachs von fast 50% erklären(siehe die tabelle im kapitel zur tb).

Wie ist es also wirklich? Hat man zugriff auf den Graka ram oder net?

EDIT
Etwas präzieser: Zeigt der Zeiger den man erhält, direkt auf den Graka speicher oder net?


Socke

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

31.07.2007, 11:51

Ggf bekommst du einen Zeiger direkt auf den Video Speicher, wenn die Daten dort liegen. In deinem Fall: D3DLOCK_DISCARD ist nur gültig mit einem dynamischen Puffer und der landet meißt im AGP Speicher, bzw mit D3DUSAGE_DYNAMIC erstellte Puffer werden so platziert wie der Treiber grad Lust hat (also meißt im AGP Speicher) und schon hast du keinen Zeiger mehr auf den Video Speicher!
@D13_Dreinig

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

3

31.07.2007, 12:31

Was?

EDIT

Also ich habe einen dyn. puffer erstellt. diesen sperre ich nun mit D3DLOCK_DISCARD.
Wohin wird der Zeiger warscheinlich zeigen?


Socke

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

31.07.2007, 12:42

In deinen virtuellen Arbeitsspeicher, wahrscheinlich. Weil: Deine Daten nie Serverseitig (Video RAM) gelagert wurden, wahrscheinlich.
@D13_Dreinig

Werbeanzeige