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

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

1

31.10.2005, 13:32

Index-Vertexbuffer Verständnis Probleme

Hallo mal wieder war lang nich hier, weil mein I-Net Probleme hatte ;)
So:
also ich schnall die Vertex-und index buffer irgendwie nich. was speichern indexbuffer nun??? und was vertexbuffer??? verdammt ich weiss jetzt nich recht wie ich die Frage stellen soll........ werden im vertex-B die Positionen der vertizes gespeichert, und im index-B bekommt jeder Vertex einen Index aber wieso???? oder was soll das ganze?? wofür sie gut sind hab ich kapiert aber halt nich was sie genau tun...
:( :( :(
Kann man die 2 Buffer auch einzeln benutzen??

auf S.181 bei dem Beispielcode, wieso zum Teufel, addiert man da
" aiIndex[iIndex]+iStartVertex " ???
was ist der sinn davon??? ???

und dann noch bei der lichtberechnung, was ist die hintergrundfarbe?????
und was ist die Eigenfarbe?????? ???

vielen dank für eure Hilfe!! :)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

31.10.2005, 14:27

Der Vertexbuffer speichert die vertices also 3 float Werte. Diese sind dann die x,y,z Werte des Vertex. Häufig passiert es, das ein Vertex nicht nur zu einem Dreieck gehört. Der Indexbuffer ist dazu da um diese Porblem Speichersparend zu lösen. Der Indexbuffer gibt die (meist) Dreiecke an. Oft nutzt man das in Verbindung mit Dreiecklisten. Um ein Viereck zu zeichen gibt man dann die werte 0,1,3 und 1,2,3 an. Es werden also der 1 und 3 Vertex doppelt genutzt.
zu S.181 kann ich nichts sagen, weil ich mir das nicht angeschaut habe.

Hintergrundfarbe ist der Anteil, der immer hinzugemischt wird egal ob angeleuchtet oder nicht. Eigenfarbe sollte sich selbst erklären.

Aber all die Fragen werden eigentlich im Buch behandelt ;)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

3

31.10.2005, 16:46

Genau, über manche Stellen hat man ganz einfach bis zu fümf mal drüber zu lesen :)

mfg Markus

DarkFitzi

Alter Hase

Beiträge: 608

Wohnort: Eisenberg, Thüringen

Beruf: Schüler, 10te Klasse

  • Private Nachricht senden

4

31.10.2005, 17:27

Hi,

Also angenommen du hast einen Würfel mit 8 Vertizes.
Wenn du den nun zeichen willst reicht es aber nicht 8 Vertizes zu speichern, sondern du musst genau 36, da ein Vertex von mehreren Dreiecken verwendet wird.
Da hilft der IndexBuffer: du musst nur 8 Vertizes speichern (bekannt machen) und 36 Indizes speichern -> die Verbrauchen viel weniger Speicherplatz als Vertizes.
Ein Dreieck beschreibst du nun z.B. so: (0,1,2), also Vertex 1, 2 und 3. Wen D3D nun zeichnen schaut es bei 0 den ersten Vertex an und bei 1 den Zweiten usw....
Wenn du dann ein anderes Dreieck beschreibst (3,5,0) schaut es bei 0 wieder den selben Vertex (den ersten) an.
Also kurz gesagt: Man muss die Vertizes (die bei großen models sehr viele sein können) nicht mehrmals speichern (was die Zahl nochmals vervielfältigen würde !!!) und spart ne menge Speicher.

zu Seite 181:
Wenn du nicht den Start Vertexwert dazuaddieren würdest, dann würdest du für alle Würfel die selben Vertizes nehmen (also die ersten 8 ).
Dann würden aber Alle Würfel an der selben Position gezeichnet werden.
Also angenommen du benutzt den 2. Index des 2. Würfels, dann ist das nicht mehr die 2 (wie beim ersten Würfel), sondern die 10 -> deswegen + iStartVertex
Ich würde die Welt gern verbessern, doch Gott gibt mir den Sourcecode nicht! :-(

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

5

31.10.2005, 20:01

Ok vielen Dank leute mal wieder seeeeehr geholfen ;)
@Nox & lannms11
Ok ihr hattet schon recht muss man manchmel gründlicher lesen ;)

aber trotzdem, bei dem index-B gibt man ja gewöhnlich meherere Vertizes mehrmals an, zum beispiel bei einem Quadrat: 0,1,2 und 1,2,3 findet der Index-B dann von selbst heraus , dass 1 und 2 mehrmals vorhanden sind und sortiert sie aus???? ???

@Nox:
unter Eigenfarbe versteh ich haargenau das gleiche wie bei streufarbe ;) ,
und wie muss man sich die Hintergrund farbe vorstellen??

Aber hey vielen Dank!! :)

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

6

31.10.2005, 20:06

Zitat von »"JossBoss"«

aber trotzdem, bei dem index-B gibt man ja gewöhnlich meherere Vertizes mehrmals an, zum beispiel bei einem Quadrat: 0,1,2 und 1,2,3 findet der Index-B dann von selbst heraus , dass 1 und 2 mehrmals vorhanden sind und sortiert sie aus???? ???

wozu denn was aussortieren??? der vertex 1 ist im vertex buffer nur einmal vertreten, egal wie oft er vom indexbuffer aus verwendet wird. der index buffer sagt nur aus welche der vorhandenen vertizes für ein dreieck verwendet werden sollen. da muss man nichts aussortieren.
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

Anonymous

unregistriert

7

31.10.2005, 23:22

nein lol damit wollte ich eigentlich sagen, dass er die 2 vertites halt nur einmal für den Vertex-B. angibt, damit der ihn nur einmal benutzen muss.... oder so... ;)
kann man die beiden Buffer auch einzeln benutzen, also nur den Index-B oder nur den Vertex-B???? ???
Thx

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

31.10.2005, 23:27

Das macht nicht wirklich Sinn, die einzeln zu nutzten, zumindest sehe ich da keinen
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Anonymous

unregistriert

9

02.11.2005, 11:07

ja aber weshalb ein index buffer?? der nimmt doch nur zusätzlichen speicher weg... man ghat ja die 8 vertizes das müsste doch reichen...... oder macht der Index-B den Vertex-B mit den Vertizes "bekannt" ??? ???

und was is nun die eigenfarbe??? ist das die farbe die ein objekt ausstrahlt, die man auch sieht obwohl eigentlich komplette dunkelheit (im Programm) herrscht, und man blind sein müsste, und nur als "Hilfe" dient???
und die hintergrund farbe ist die farbe, die sich ergibt, wenn ein Objekt nicht direkt angestrahlt wird.. zum B. beim Spotlicht??? D.h dann leuchtet der ganze raum in der HintergrundFarbe???

Ok thx mal wieder lol :huhu: :)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

10

02.11.2005, 12:25

Woher soll den ohne index buffer das Programm wissen, wie die vertices untereinander verbunden sind?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige