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

Aktuelle Zeit: Sa Jul 19, 2025 20:56

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: VBO feat. ArrayBuffer
BeitragVerfasst: Mi Nov 18, 2009 23:20 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
HI,

ich bin grad dabei mein Code bisl zu verbessern, dazu bin ich auf VBOs umgestiegen. Da die Kombinationen der StandartTypen für mein Vorhaben nicht passen (ich brauch TexturenCoord, Farben+Alpha und Vertecs) und ich nich unnötig Speicher verschwenden will indem ich GL_T2F_C4F_N3F_V3F benutz wollt ich zusätzlich neben meinem VBO(GL_C4UB_V3F) noch ein ArrayBuffer mit den TextureCoordinaten einbinden. Ist das Möglich oder kickt das VBO den ArrayBuffer beim Binden wieder raus? Zeichnen will ich dann mit glDrawElements/glMutliDrawElements...

Code:
  1. procedure TVertexBufferObject.Bind;
  2. var Size: Integer;
  3. begin
  4.   glBindBufferARB(GL_ARRAY_BUFFER, fVertexBufferObject);
  5.   Size := 0;                                                                    //initialisieren
  6.   case fVertexType of                                                           //je nach VertexTyp größe berechnen
  7.                 GL_V2F: Size := SizeOf(TVertexV2f);
  8.                 GL_V3F: Size := SizeOf(TVertexV3f);
  9.            GL_C4UB_V2F: Size := SizeOf(TVertexC4bV2f);
  10.            GL_C4UB_V3F: Size := SizeOf(TVertexC4bV3f);
  11.             GL_C3F_V3F: Size := SizeOf(TVertexC3fV3f);
  12.             GL_N3F_V3F: Size := SizeOf(TVertexN3fV3f);
  13.         GL_C4F_N3F_V3F: Size := SizeOf(TVertexC4fN3fV3f);
  14.             GL_T2F_V3F: Size := SizeOf(TVertexT2fV3f);
  15.        GL_T2F_C4UB_V3F: Size := SizeOf(TVertexT2fC4bV3f);
  16.         GL_T2F_C3F_V3F: Size := SizeOf(TVertexT2fC3fV3f);
  17.         GL_T2F_N3F_V3F: Size := SizeOf(TVertexT2fN3fV3f);
  18.     GL_T2F_C4F_N3F_V3F: Size := SizeOf(TVertexT2fC4fN3fV3f);
  19.   end;
  20.  
  21.   glInterleavedArrays(fVertexType, Size, nil);  
  22. end;
  23.  
  24. procedure TArrayBuffer.Bind;
  25. begin
  26.   glEnableClientState(fArrayType);
  27.   case fArrayType of
  28.     GL_TEXTURE_COORD_ARRAY: glTexCoordPointer(fSize, fDataType, 0, fStartAdressPointer);
  29.     GL_COLOR_ARRAY        : glColorPointer   (fSize, fDataType, 0, fStartAdressPointer);
  30.     GL_VERTEX_ARRAY       : glVertexPointer  (fSize, fDataType, 0, fStartAdressPointer);
  31.     GL_NORMAL_ARRAY       : glNormalPointer  (       fDataType, 0, fStartAdressPointer);
  32.   end;
  33. end;


MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: VBO feat. ArrayBuffer
BeitragVerfasst: Mi Nov 18, 2009 23:25 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Du bindest deinen VBO mit einem glBindBufferARB(GL_ARRAY_BUFFER....das sollte dir hoffentlich zu denken geben.
=> VBO ist das selbe wie ein Arraybuffer

glInterleavedArrays macht nichts anderes als die einzelnen gl*Pointer aufzurufen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: VBO feat. ArrayBuffer
BeitragVerfasst: Mi Nov 18, 2009 23:32 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hm... Also könnte ich mir auch nen eigenen Typ schreiben: T2f_C4f_V3f
und mit glVertexPointer & Co binden. Muss ich dann um an den 1. Vertex zu kommen die StartAdresse hochrechnen oder zählt glVertexPointer das stride auch beim 1. Element von selber drauf?

MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: VBO feat. ArrayBuffer
BeitragVerfasst: Mi Nov 18, 2009 23:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Das letzte Argument (der Pointer) kann als Offset benutzt werden.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: VBO feat. ArrayBuffer
BeitragVerfasst: Mi Nov 18, 2009 23:41 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Okay,

ich merk grad das es T2f_C4ub_V3f ja schon gibt... -.-
ich sollte vlt ins bett gehen, sry :oops:

MfG Bergmann

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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 ]