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

Aktuelle Zeit: Mi Jul 16, 2025 18:49

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Fragen zu VAOs
BeitragVerfasst: Sa Jun 18, 2011 21:29 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Dez 03, 2008 12:01
Beiträge: 167
Wohnort: /country/germany
Programmiersprache: C++ / FreeBASIC
Hi,
seit einiger Zeit schreibe ich mal wieder an meiner Engine, die diesmal nur OpenGL 3.3 Core Funktionalität nutzt. Shader, Texturen und simples Rendern eines einzelnen Dreiecks klappen bisher, aber ich habe noch einige Fragen zu VAOs.
So wie ich das jetzt verstanden habe, kann ich ein Index Buffer Object pro VAO haben. Wenn ein VAO gebunden ist und ich ein IBO binde, wird es quasi im VAO gespeichert und ist immer dann gebunden, wenn ich das VAO binde.
Das IBO braucht man aber nur, wenn man glDrawElements() verwendet, wenn man glDrawArrays() verwendet wird ja kein IBO benutzt, dementsprechend braucht man dann auch keines.
Dann speichert das VAO ja noch meine Attribute und deren Status, festgelegt durch glVertexAttribPointer() und glEnableVertexAttribArray().
Korrigiert mich bitte, wenn ich hier schon falsch liege ;)
Was ich jetzt aber nicht verstehe: Was ist mit den VBOs? Die Attribute können ja (nach dem was ich bisher so gehört habe) aus mehreren VBOs kommen, aber wie werden die denn gebunden? Werden die VBOs auch in den VAOs abgelegt und dann automatisch gebunden?

Grüße,
darkinsanity

_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fragen zu VAOs
BeitragVerfasst: Sa Jun 18, 2011 22:56 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 06, 2005 18:34
Beiträge: 362
Wohnort: Hamburg
Hey,

das mit den IBOs hast du schon richtig verstanden.
Mir hat bei dem Verständnis dieser Artikel sehr geholfen: http://www.opengl.org/wiki/Vertex_Array_Object

Wenn du glEnableVertexAttribArray benutzt wird das attribute mit dem entsprechenden index im VAO aktiviert und das zu der Zeit gebundene VBO für dieses Attribut gespeichert. Wenn du dann mit dem VAO zeichnen willst und es bindest, werden alle darin gespeicherten VBOs automatisch verwendet.

Die VBOs werden aber nicht direkt im VAO gespeichert, sondern nur darin referenziert. D.h. wenn du das VAO löschst und die VBOs nicht mehr brauchst, musst du dich selber darum kümmern, dass sie auch gelöscht werden.

Die Verwendung von VAOs läuft also ungefähr so ab:
Code:
  1.  
  2. Erstellung:
  3. VAO erstellen
  4. VAO binden
  5. für jedes VBO, dass attribute hält:
  6.     VBO binden
  7.     für jedes Attribut in dem aktuellen VBO:
  8.         glVertexAttribPointer aufrufen
  9.         glEnableVertexAttribArray aufrufen
  10.  
  11. Nutzung:
  12. VAO binden
  13. glDraw* aufrufen
  14.  

_________________
Der Mensch hat neben dem Trieb der Fortpflanzung und dem zu essen und zu trinken zwei Leidenschaften: Krach zu machen und nicht zuzuhören. (Kurt Tucholsky)
Schwabbeldiwapp, hier kommt die Grütze. (Der Quästor)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Fragen zu VAOs
BeitragVerfasst: Sa Jun 18, 2011 23:28 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Dez 03, 2008 12:01
Beiträge: 167
Wohnort: /country/germany
Programmiersprache: C++ / FreeBASIC
Ah, jetzt hab ich es verstanden ;)
Den Artikel über VAOs und den Artikel "Vertex Specification" im OpenGL wiki hatte ich bereits gelesen, aber irgendwie hab ich das mit den VBOs da nicht kapiert gehabt. Aber jetzt ist es mir klar ^^

_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak


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 20 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]