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

Aktuelle Zeit: Fr Jul 18, 2025 00:11

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



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Noch mal VBO
BeitragVerfasst: Fr Okt 08, 2004 12:26 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Ich mache denn mal meine Drohung war und versuch das gantze (Ansonsten is meine Grafik vertig. Aber eben nur zwischen 2 und 4 mil. Dreiecke pro Sekunde)!

Zitat aus einer Antwort zu meiner letzten Frage (Variablen auf Grafikspeicher):

Zitat:
GL Man Pages zu glInterleavedArrays, allerdings muss man nicht unbedingt glInterleavedArrays nutzen, sondern kann wie gesagt auch gl*Pointer nutzen. So mache ich das inzwischen auch, und hat den Vorteil dass man nicht an die vorgegebenen Formate gebunden ist.

Und zum Format gibts auch nicht viel zu sagen, steht ja alles in der Konstante drin :

GL_T2F_C3F_V3F

T2F = 2 Single-Texturkoordinaten (S,T)
C3F = 3 Single-Farbwerte (R,G,B)
V3F = 3 Single Vertexkoordinaten (X,Y,Z)

Aber wie gesagt ist man mit gl*Pointer besser dran, da man dann nicht auf die vorgegebenen Formate angwiesen ist.


was meinst du mit gl*pointer?

Ich bräuchte jetzt folgendes Format:

GL_T2F_C3F_N3F_V3F

aber es gibt nur

GL_T2F_C4F_N3F_V3F (aus dglopengl)

wie sähe da die gl*pointer lösung aus?

und benutze ich dann zum rendern die selben befehle (mit entsprechendem Vormat):
glInterleavedArrays(???, SizeOf(TVertex), nil);
glDrawArrays(GL_QUADS, 0, VBOSize);

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Okt 08, 2004 23:18 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wenn du kein passendes Format findest, musst du es halt via glVertexPointer, glNormalPointer und glTexCoordPointer machen, was dann auch den Vorteil hat dass du mehrere Texturkoordinaten übergeben kannst.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 09, 2004 12:00 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 02, 2003 12:47
Beiträge: 300
Wohnort: Marburg
Hm, und wie geht dass. Vielleicht sollte ich meine Fragen im Anfängerforum stellen :-) aber eine etwas ausführlichere erklärung wäre gut. oder kennst du da eventuell ein tutorial was ansatzweise passen würde?

_________________
Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 09, 2004 12:03 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wieso Tutorial? Im Netz (google) gibts doch zu jedem Befehl ne ManPage (teilweise auch im Wiki). Und der Befehl wird wie bei nem VA benutzt, bloß dass du keine n Zeiger auf die Daten übergibst, sondern NULL, weil das VBO ja bereits gebunden ist. Im Endeffekt hast du dann ein VBO für Vertexdaten, für Farbdaten (CBO) für Normalen (NBO), Texturkoordinaten (TBO), etc. Ein Tutorial dafür gibts nicht, weils da nicht mehr zu sagen gibt.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 09, 2004 12:47 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich schätze mal du hast bei dir alle Daten in einem Buffer. Das geht natürlich auch, dann musst du allerdings mit den entsprechenden Pointermethoden spezifieren wo sich deine Daten befinden. Das würde in deinem Falle evtl so aussehen müssen.

GL_T2F_C3F_N3F_V3F

2 + 3 + 3 + 3 = 11
Ein Vertext besitzt bei dir also 11 Floats (bei Farben ist Float im übrigen ein wenig übertrieben).

Der erste Parameter ist die Größe, der Zweite der Datentyp, der Dritte die Gesammtgröße des "Datensatzes" und der Vierte das Offset innerhalb des Datensatzes.

Code:
  1. glTexCoordPointer(2, GL_FLOAT, 11 * SizeOf(TGLfloat), Pointer(0)); //Pointer(0 * SizeOf(TGLfloat))
  2. glColorPointer(3, GL_FLOAT, 11 * SizeOf(TGLfloat), Pointer(2 * SizeOf(TGLfloat)));
  3. glNormalPointer(3, GL_FLOAT, 11 * SizeOf(TGLfloat), Pointer(5 * SizeOf(TGLfloat)));
  4. glVertexPointer(3, GL_FLOAT, 11 * SizeOf(TGLfloat), Pointer(8 * SizeOf(TGLfloat)));


So oder so ähnlich würde es aussehen, wenn du komplett alles in einem Buffer hast. Ob es mehr Sinn machen würde alles in einem getrennten VBO zu machen hängt wohl immer vom Anwendungsfall ab.


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 » OpenGL


Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot] und 5 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.007s | 15 Queries | GZIP : On ]