DGL https://delphigl.com/forum/ |
|
Eigenes Vertexformat definieren oder flexibler https://delphigl.com/forum/viewtopic.php?f=20&t=8888 |
Seite 1 von 1 |
Autor: | Wladimir [ Mi Dez 23, 2009 20:56 ] |
Betreff des Beitrags: | Eigenes Vertexformat definieren oder flexibler |
Ich wollt mir eine Shaderbasierte Engine schreiben und stellt sich mir die Frage, ob ich ein eigenes Vertexformat definieren sollte und damit unflexibel bin wenn andere Vertexformate gebraucht werden, oder es anders löse. Vielleicht kann mir ja einer helfen. |
Autor: | Frase [ Do Dez 24, 2009 10:06 ] |
Betreff des Beitrags: | Re: Eigenes Vertexformat definieren oder flexibler |
Da die Frage imho vieeeel zu generisch ist, stell ich mal ne Gegenfrage: Wäre es denn wirklich so viel Aufwand, das Vertexformat nachher wieder zu ändern? Kann ich mir eigentlich nicht vorstellen ![]() Ich würde also erstmal ein eigenes nehmen und wenn es sich nicht vermeiden lässt irgendwann auf ein festes umsteigen. |
Autor: | Coolcat [ Do Dez 24, 2009 10:49 ] |
Betreff des Beitrags: | Re: Eigenes Vertexformat definieren oder flexibler |
Ich verwende WebGL, was in dieser Hinsicht recht ähnlich zu OpenGL 3 ist. Also bei mir sieht das so aus: Bei der Definition des Shaders gebe ich neben den Texture-Uniforms auch die Vertexattribute an: Code:
Also das Attribute aPosition wird vor dem linken des Shaders auf Index 0 gebunden, aNormal auf Index 1 usw. Genauso geht es auch mit den Texturen, die Uniform-Variable uTexture wird beim laden des Shaders auf 0 gesetzt, uBumpmap auf 1. Beim Mesh gebe ich das Format durch eine Ziffernfolge an. Die Größe eines Vertex beträgt 3+3+2=8 Floats. Die ersten 3 floats werden an Index 0 gebunden, die nächsten 3 an Index 1 und dann noch 2 floats an Index 2. Code:
Der Format-String wird überprüft und in ein Array umgewandelt, beim rendern wird das ganze dann so gesetzt: Code:
Das ganze ist sehr flexibel und ausreichend schnell. Zwar wäre es wahrscheinlich schöner das Format an einer Stelle zu definieren, aber so werden die Daten dort definiert wo sie benötigt werden und es ist keine komplizierte Interaktion von Mesh- und Shader-Klasse zum Datenaustausch notwendig. Eine Einschränkung ist, dass im Augenblick nur Float-Daten möglich sind. Liegt daran das das in WebGL nicht so leicht ist ein Array zu erzeugen was Daten gemischten Typs enthält. Aber in C++ oder Delphi lässt sich das Konzept leicht erweitern....z.B. ein Format-String "3f4b2f" für eine Position aus drei Floats, eine RGBA-Farbe aus Bytes und eine 2D-Texturkoordinate. |
Autor: | Wladimir [ Do Dez 24, 2009 21:10 ] |
Betreff des Beitrags: | Re: Eigenes Vertexformat definieren oder flexibler |
So war auch meine Anfangsidee, Coolcat, aber dann muss ich ja auch für so primitive Objekte wie Würfel immer eine Modeldatei anlegen, statt sie direkt mit einer Funktion zu erstellen. Sehe ich das falsch? |
Autor: | Coolcat [ Do Dez 24, 2009 22:35 ] |
Betreff des Beitrags: | Re: Eigenes Vertexformat definieren oder flexibler |
Wieso das? Deine Funktion könnte doch auch das Format zurückgeben? |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |