Im algemeinen sagt man ja, dass man State-Changes nicht all zu oft durchführen sollte, weil die ein oder anderen zu viel Zeit verbraten. Aber wie sieht das mit den ClientStates aus? Ich frage, da ich in den Verschiedensten Tutorials zu Vertex-Arrays immer gesehen hab, dass der Vertex-Array State gesetzt wurde, das Array mit glDrawElemtents gezeichnet und dann der ClientState (glDisableClientState) wieder deaktiviert wurde. Muss das sein oder reicht es nicht, die States wie GL_VERTEX_ARRAY, GL_COLOR_ARRAY usw. einmal zu setzen solange sich die verwendeten VertexArray Elemente nicht ändern? Oder ist der Client-State-Change zu vernachlässigen (was die Zeit angeht)?
_________________ Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Wenn du nur Vertexarrays (gepaart mit den anderen aktiven Arrays) renderst, kannst du die Clientstates natürlich aktiviert lassen. Warum die in den meisten Tutorials nach dem Rendern wieder deaktiviert werden liegt wohl daran das die meisten Einsteiger das sonst evtl. vergessen und dann böse Fehler machen.
Allerdings ist ein einfaches glEnable/glDisable (egal ob Server-/oder Clientstate) im Normalfall so schnell ausgeführt dass es eigentlich kaum was ausmachen dürfte ob du das nun nach dem Rendern des VAs abschaltest oder nicht.
Wenn man VBO's verwendet dann wird zumindest bei NVidia Karten mit den gl*Pointer Befehlen der State tatsächlich akualisiert und das sind die Befehle die Zeit kosten.
Im Klartext: die VAs/VBOs sortiert nach deren Vertex-Typen (also mit Textur, mit Farbe etc.) rendern um möglichst unnötigt State-Changes zu vermeiden. Aber gut zu wissen, dass man die States NICHT deaktivieren muss (dachte mir's zwar schon, aber wollte nochmal sicher gehen). Besten Dank auf jeden Fall, dann kann ich ja munter weiter Proggen...
_________________ Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?
Mitglieder in diesem Forum: 0 Mitglieder und 3 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.