Ich habe die Frage in ähnlicher Form schon im OpenGL-Forum gestellt, dort aber keine Antwort erhalten. Ich vermute, weil man die Frage zu doof fand. Deshalb formulier ich's mal anders, und ich hoffe, nun im richtigen Forum zu sein.
Also, wenn ich das richtig verstanden habe, kann ich die Vertices ähnlicher Primitiven in Arrays ablegen und einen Zeiger auf dieses Array an OpenGL übergeben, damit die Primitiven in einem Rutsch gezeichnet werden. Vorher muss dann wohl glEnableClientState aufgerufen werden. Was mir aber nicht klar ist, warum und wann glDisableClientState aufgerufen werden muss. Wird der Array-Zeiger dadurch zurückgesetzt? Stört der Zeiger evtl. bei anderen Aktivitäten? Sind die "normalen" Befehle zum Zeichnen unwirksam, solange glEnableClientState aktiv ist?
Ich würde es ja gerne ausprobieren, aber erfahrungsgemäß bringt man dabei schnell Ursache und Auswirkung durcheinander.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das glDisableClientState ruft man i.d.R. sicherheitshalber auf. Wenn man z.B. ein VA/VBO rendert dass ein Normalen-, ein Texturkoordinaten- und Vertexarray hat (und diese aktiviert), aber danach z.b. ein VA/VBO rendern will dass nur Normalen- und Vertexdaten besitzt provoziert man eine AV wenn man das Texturkoordinatenarray trotzdem noch aktiviert hat.
Ah ja, sehe schon klarer. Aber gleich noch 'ne Frage:
Ich hab mal ein Beispiel gesehen, da wurden die Vertexdaten, Normalen und Texturkoordinaten immer direkt hintereinander, also quasi gemischt, in dem Array untergebracht, und stride war entsprechend groß. Wäre es nicht einfacher, für die verschiedenen Daten jeweils ein eigenes Array zu benutzen? Dieses Auseinanderpfücken ist mir irgendwie nicht sympathisch.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Kommt halt drauf an wie man seine Daten ablegt, ist also eher Geschmackssache. Die festen Formate wie z.B. GL_C3F_V3F sind halt eingeschränkt, da sind separate Arrays wohl besser. Wenn man Shader nutzt, wird man aber meistens keines von beiden direkt nutzen sondern solche Sachen wie Normalen, Binormale (und ggf. Tangente) und co. über Vertexattribute übergeben, dass ist nochmal flexibler.
Mitglieder in diesem Forum: 0 Mitglieder und 10 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.