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.09.2008, 23:22

Vertex Buffer oder nicht?

Hi! Ich plage mich nun mit ein paar Fragen herum, bei denen es darum geht, wlch methoden man am besten zum rendern verwendet! Wenn man nun ein Animiertes Modell hat, das sich auch dauerhaft bewegt, währe es dabei sinvoll einn VertexBuffer zu erstellen, oder es sich gleich einfacher zu machen, und es mit DrawIndexedPrimitivesUP() zu zeichnen? Da ich ja bei edem Rendern die Positionen der Vertices ändern muss, muss ich ja auch jedes mal den Verex Buffer neu an die Graka schicken, also kann ich es ja auch mit der anderen Funktion machen, und mir de schwerstarbeit abnehmen lassen. Wenn ich nun in statisches Modell habe, wie ein Würfel, sollt es sich lohnen einen VertxBuffer zu verwenden, da sich daran ja nie etwas verändert, und omit di ganze zeit in der GraKa liegen kann. Aber wie sieht es nun mit einem Trrain aus, wenn ich einen LOD Algorythmus eingebaut habe, verändern sich ja auch die Vertices die ganze zeit, und es ist somit auch sinnlos einen VertexBuffer zu verwenden! Könnte mich jemand aufklären und ein paar Tipps geben?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

30.09.2008, 23:27

Verwende für alles Vertexpuffer.
@D13_Dreinig

3

30.09.2008, 23:30

Ok, ich werde es versuchen :)

Kennst du vieleicht einen Artikel, wo genau erklärt wird, was der Vertex Buffer genau macht, denn wie man ihn benutzen kann weiß ich ja, nur nicht was er genau macht.

4

30.09.2008, 23:36

Hmm, mir ist da gerade etwas eingfalln, wegen dem Terrain! ich kann ja, das Terrain in die Grafik Karte laden, also die gesammten Vertices, und wenn sich durch das LOD etwas verändert, muss ich ja lediglich den Index Buffer verändern, und der ist ja um einigs kleiner als der VertexBuffer!

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

5

30.09.2008, 23:45

Zitat von »"Dustin Braun"«

Ok, ich werde es versuchen :)

Kennst du vieleicht einen Artikel, wo genau erklärt wird, was der Vertex Buffer genau macht, denn wie man ihn benutzen kann weiß ich ja, nur nicht was er genau macht.


Grob gesagt kannst du, anhand der Vertexbuffer API, deine Daten an unterschiedliche Orte ablegen (System-, AGP- oder Grafikkartenspeicher). Je nachdem was dem Treiber am sinnvollsten erscheint.

Idealerweise bekommst du die Daten direkt Serverseitig gelagert, sodass du dir den öden Weg Systemspeicher->Grafikkarte ... sparen kannst.

Zitat von »"Dustin Braun"«

Hmm, mir ist da gerade etwas eingfalln, wegen dem Terrain! ich kann ja, das Terrain in die Grafik Karte laden, also die gesammten Vertices, und wenn sich durch das LOD etwas verändert, muss ich ja lediglich den Index Buffer verändern, und der ist ja um einigs kleiner als der VertexBuffer!


Hängt halt vom verwendeten Algorithmus ab...
@D13_Dreinig

6

01.10.2008, 00:00

Ich glaub für ROAM währe es optimal so, bi GeomipMapping fraglch, währe es denk ich relativ egal was man verwendet, dies hängt auch wieder von der anzahl de vertices ab, die im speicher liegen sollen.

Da der sichtbereich nicht so wit sein soll, sondern nur umgfair 1000 quads weit, dann kann man einfach die die indices ändern, oder, da ich ja nur wenn ich die jeweilige pages verlasse, die stufen sich verändern, kann ich auch dirkt den vertexBuffer verändern, um platz auf der Grafkkarte zu sparen.

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

7

01.10.2008, 00:06

Vertex buffer ist einfach ein speicherbereich im speicher auf der grafikkarte. wenn du ihn sperrst, werden alle daten daraus gelesen und in den arbeitsspeicher geladen, so dass du die daten verändern kannst. wenn du ihn wieder entsperrst, wird alles zurückkopiert. du kannst beim sperren auch angeben, dass du den gesamten speicher überschreiben möchtest. dann wird er nicht erst von der grafikkarte gelesen, ist ja schwachsinnig. das spart performance.

So, nun verstehe ich net, warum du jedes mal die vertices von deinem terrain bearbeiten musst... doch nicht etwa zum bewegen? *hust* weltmatrix *hust*

Socke

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

8

01.10.2008, 08:40

Zitat von »"faule socke"«

So, nun verstehe ich net, warum du jedes mal die vertices von deinem terrain bearbeiten musst... doch nicht etwa zum bewegen? *hust* weltmatrix *hust*


wird wohl eher wegen LOD sein. trotzdem nicht zu empfehlen da hast du recht ;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

01.10.2008, 09:12

Zitat von »"Faule Socke"«

Vertex buffer ist einfach ein speicherbereich im speicher auf der grafikkarte


Die Daten werden nicht zwangsläufig Serverseitig gehalten.
@D13_Dreinig

Werbeanzeige