Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Hallo, Ich habe mich jetzt ziemlich lange mit 3D Geometrie und mit Ladedaten beschäftigt. Dabei ist mir aufgefallen, dass häufig die unterste Kategorie, nämlich bereits der Vertex eine Farbe bekommt.
Ist das sinnvoll, jedem einzelenen Vertex mit einer Farbe zu bestücken? Normalerweise haben die Models eine Textur drauf. Die Farbe kann man dann mit der Textur verrechnen, also die Textur im Farbton verändern. Aber doch eigentlich nicht für jeden Vertex extra, da reicht es doch, die Farbe für ein bestimmtes Mesh-Stück zu definieren? Würde man die Farbe für jeden Vertex extra verändern, sieht das aus wie eine Lichtorgel.
Aber im Ernst, wo wird so etwas gebraucht? Viele Grüße, Traude
Prinzipiell kann es hier und da mal ganz praktisch sein Vertices einzufärben.. um z.B. mal nen farbverlauf zu machen etc
Allerdings frage ich mich da eher immer, wenn es zum Thema VBO kommt wie sinnvoll es da ist. glColor() gibt es ja nichtmehr bei OpenGL 3.0, sprich ich bin gezwungen ein VBO mit Farben anzulegen.. bei einem sehr high-poly mesh kann das aber durchaus ne ganze menge an daten sein, die eigentlich aber ja total überflüssig sind.
Gibt es da nen trick oder Ähnliches um zu vermeiden das man unnötig speicher mit Farb-VBOs vollhaut?
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Ich bin noch gar nicht auf OpenGL3, ich habe also noch glColor. Aber wenn ich es nicht benutzen könnte, gibt es ja noch die Möglichkeit eine Color dem VertexShader zu übergeben per Uniform oder so.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ich denke glColor stammt noch aus der Urzeit von OpenGL und wurde halt miutgeschleift. Wirklich sinnvoll ist per-Vertex-Colorierung schon lange nicht mehr, genausowenig wie bis zu 32 Texturkoordinaten oder die Vertexbeleuchtung.
Allerdings muss man in Shaderzeiten glColor oder glMultiTexCoord ja nicht mehr unbedingt für das nutzen wofür es gedacht ist, da man ja selber interpretieren kann und die Werte interpoliert werden. So kann man dann z.B. mittels glColor für jeden Eckpunkt nen Parameter übergeben den man im Shader nutzt. Ich selbst nutze z.b. glMultiTexCoord um eine TBN-Matrix an einen Shader für Parallaxoffsetmapping zu übergeben.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ab OpenGL3 machen 100% aller aktuellen 3D Modelformate keinen sinn mehr, da sie furchtbar ineffizient sind und viel zu starr sind. Es macht nun viel mehr Sinn einzelne Streams zu speichern, diesen jeweils einen Namen zu geben und im Shader diese dann an den richtigen stellen zu binden. Hierzu kann man echt kreativ sein, Scripte, Configfiles, Programmcode,... . Wie schon Sascha sagte sind glColor, glTexcoord und ähnliches einfach nur noch Leichen in der API, welche mit der Einführung von GLSL überwiegend als einfaches Binding vergewaltigt haben. Mit OpenGL3.x ist es ja nun endlich raus und man muss sich diese Gedanken eigentlich garnicht mehr machen
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Der Beitrag, den ich oben zitiert habe, ist aus dem Jahr 2007. (!)
Diese Dinge stehen - ich habe im Wiki nachgeschaut - schon bereits sein OpenGL 2.0 zur Verfügung. Ich kann das auch in Betrieb nehmen, obwohl ich keine taufrische Grafikkarte habe.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Überwiegend sogar schon OpenGL1.6 mit der Entsprechenden GLSL ARB Funktionsliste. Mein RadonFramework verlangt zum zeichnen eines Meshes ein MeshProcessor, welcher entweder Hardcoded ist oder ein Shader ist, so konnte ich ein OpenGL3 fähige API schreiben die aber noch mit mehr Aufwand zu OpenGL<2 Kompatibel ist.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Ein State-Of-The-Art OpenGL-Renderer wäre vielleicht keine schlechte Idee fürs Wiki. Denn der, den ich da vor kurzem reingeschrieben habe, ist offenbar ein alter Hut.
Wer weiß, ob es nicht noch etwas Neueres gibt?
@Tak: ich bin völlig unempfindlich für Werbung für Frameworks und Model Formate.
Mitglieder in diesem Forum: 0 Mitglieder und 8 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.