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

Paddy

Frischling

  • »Paddy« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Essen

  • Private Nachricht senden

1

27.11.2006, 16:55

VertexBuffer und Dynamische Arraygröße

Hi,

mal ne "blöde" Frage:

Der Vertexbuffer wird ja mit einem Array an Vertexdaten versorgt, die in nem Array stehen...

Hab im Moment nicht ganz den Durchblick wie ich so ein Ding zur Laufzeit in variabler Länge erstellen kann. Normalerweise würde ich sowas als binäre Liste anlegen und hätte in jedem Vertex einen Pointer auf das nächste Vertex (hat in GL mit List auch ganz gut geklappt). Wenn ich aber ein FVF anlege ist da kein Pointer möglich...was also machen?
(denke ich hab da irgendwas grundlegendes zum Thema Array verpennt, oder?)

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

2

27.11.2006, 17:32

Eine Möglichkeit ist dass Du es für Dich als Liste verwaltest und dann ein Array machst und um-kopierst. Passiert ja nur einmal.

Die bessere Alternative ist z.B. beim Laden aus Dateien am Anfang der Datei die Zahl der vertices stehen zu haben, beim Laden das array allozieren bzw schauen ob auf deinem momentanen VB noch genug Platz ist und dann aus der Datei füllen.


Du bist übrigens nicht zufällig der "Maya Paddy", oder?
"Games are algorithmic entertainment."

Paddy

Frischling

  • »Paddy« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Essen

  • Private Nachricht senden

3

27.11.2006, 17:52

Ich denke du verstehst mich da nicht so ganz.

Arrays müssen ja bei Generierung ne Konstante als Größe bekommen.
Da ich ja nun nicht sagen kann wie groß das zu ladende Modell wird komm ich ja nun nicht wirklich mit Arrays weiter.

Natürlich hat mein Datendateiformat einen Eintrag über die Gesamtmenge der im Modell vorhandenen Vertices, aber das lese ich ja dann als Variable ein und die kann ich ja nicht zum Generieren eines Arrays ala "VERTEX ModelVertices[loadedSize]" benutzen...
Gibts denn ne Möglichkeit den Vertexbuffer die Verticies einzeln mitzuteilen, oder geht das nur als Bulkcopy?

Sinn soll halt sein, dass die Vertices schon in den RAM geladen werden können und erst wenn man sie braucht in den GK speicher lädt (natürlich nur einmal und nicht jedes Frame).


Wenn du mit "Maya Paddy" meinst, ob ich mit Maya arbeite, dann ja. Wenn du meinst, ob ich das als Nick hab, dann nein.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

4

27.11.2006, 18:55

Zitat von »"Paddy"«

und die kann ich ja nicht zum Generieren eines Arrays ala "VERTEX ModelVertices[loadedSize]" benutzen...


Achso, ok. Du musst die "dynmisch allozieren" (evtl bei Google nach mehr suchen):

C-/C++-Quelltext

1
VERTEX *Modelvertices = new VERTEX[loadedSize];


Du kannst Modelvertices dann wie ein Array benutzen bzw es ist eines.
"Games are algorithmic entertainment."

Paddy

Frischling

  • »Paddy« ist der Autor dieses Themas

Beiträge: 15

Wohnort: Essen

  • Private Nachricht senden

5

27.11.2006, 23:54

Hatte nicht überrissen, dass ich auch die Daten so übergeben kann.

Der Create ist klar...
Die Maxwerte werden ja eh woanders gehandled, ging halt nur ums Prinzip...(ist ja doch fast wie glList)

MYVERTEX* vertices;
vbuffer->Lock (0,0,(void**)&vertices,0);
vertices[0] = MYVERTEX(0.0f, 1.0f, 4.0f);

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

28.11.2006, 07:43

Was genau spricht gegen die Verwendung von std::vector?
@D13_Dreinig

Werbeanzeige