Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 07:20

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Jun 17, 2010 16:53 
Offline
DGL Member

Registriert: Di Jan 24, 2006 18:46
Beiträge: 97
Hallo ihr,

ich habe aktuell im Hauptspeichern 4 Arrays mit den Texturkoordinaten (g_texcoords), Normalen (g_normals), Verticen (g_vertices) und Indexen (g_faces). Nun will ich die mittels einem VBO rendern, was ich mittels Interleaved Arrays machen könnte, aber auch ohne. Ersteres würde erfordern, dass ich mittels einer Schleife alle 3 bzw. 4 Arrays durchgehe und die Daten "sortiert" hochlade, damit ich GL_T2F_N3F_V3F verwenden kann.
Da ich aber gerade keine Lust auf Schleifen habe :lol: , dachte ich, probierst du es mal ohne Interleaved Arrays, also dass die 3 bzw. 4 Arrays (je nach dem ob man die Indexe verwendet) in getrennten Speicherbereichen auf der GraKa liegen bzw. hintereinander (und nicht abwechselnd wie es bei Interleaved Arrays der Fall ist).

Geht das? Wenn ja wie? (Was müsste z.B. Stride für einen Wert haben, da die Texturen ja nur 2 Koordinaten haben, der Rest aber mehr?)

Besten Dank im Voraus
SunBlack


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Jun 18, 2010 10:29 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Das geht nicht ohne weiteres. Du könntest zwar mit glVertexPointer und Konsorten ein entsprechendes Verhalten erreichen. Bedenke aber: Wenn dus interleavst muss die Grafikkarte nur einen Happen nach dem anderen nehmen, essen und dann verdauen. Anders muss sie sich die Zutaten aus allen Ecken zusammensuchen (um in dem Bild zu bleiben), weil sie nicht direkt nebeneinander liegen. Ich weiß aber nicht genau, was für einen Performance-Impact das letztendlich hat. Im zweifelsfalle ausprobieren.

Eventuell auch für dich interessant: VBO ohne glInterleavedArrays.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Jun 18, 2010 10:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Also soweit ich weiß kann man nur ein VBO gleichzeitig binden. Alle Daten müssen also irgendwie in einem Buffer sein. Es ist aber möglich die Daten hintereinander in einem Buffer zu speichern. Dazu Stride auf 0 setzen und den Offset/Pointer jeweils auf den Anfang des jeweiligen Bereiches. Die Schleife brauchst du dann aber trotzdem.

Wann immer möglich sollte man die Daten aber interleaved speichern. Es gibt Fälle in denen es sinnvoll ist auf das interleaven zu verzichten....aber "keine Lust auf Schleifen" zählt nicht dazu ;) Ein Grund wäre beispielsweise, wenn du Vertexfarben hast und sich die Farben regelmäßig ändern, während der Rest des Buffers unverändert bleibt. In dem Fall würde man dann mit glBufferSubData genau den Bereich mit den Farben überschreiben.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]