Ich verstehe jetzt nicht genau wie du das meinst. Das eigentliche Problem ist ja das Die IndexBuffer mit der Kamera mitwandern. Wenn ich nun ein IndexBuffer zeichne und darauf mein TexturSplatting anwende, wandern die Texturen auch mit der Kamera mit.
//Edit
Hat sich erledigt! Ich habe nun Geomipmapping eingebaut, und ich glaube dabei gibt es auch ein ganz gutes verfahren um diese ganz elegant zu rendern.
Ich habe mir das so gedacht das ich Terrain Patches von der größe 32x32 Vertices habe. Ich erstelle nur einen Vertex Buffer und 5 Index Buffer. Der Vertex Buffer wird mit den Vertices gefüllt, die Z Koordinate(höhe) bleibt bei 0 und die die X und Y Koordinaten werden entsprechend gesetzt. Die 5 verschiedenen Index Buffer beinhalten die verschiedenen Detailgrade, teoretisch währen auch 6 verschiedene Detailstufen möglich, jedoch würde dann 1 Patch aus nur 2 Poligonen bestehen. Die Höhendaten liegen auf der Festplatte in Raw dateien vor, da sie sehr klein sind oder einem eigenen formaz bei dem der Farbkanal von 0 bis 1 geht, dadurch sind bessere Höhenunterschiede zu realisieren. Beim Laden des Terrains werden die jeweiligen Bilddateien geladen. Wenn das Terrain nun gezeichnet werden soll, wird immer ein und der selbe Vertex Buffer als stream gesetzt und der dazugehörige Index Buffer mit dem entsprechendem Detailgrad. Instancing wäre bei dieser Variante bestimmt nicht schlecht. Transformiert wird dann über einen Shader, welcher die Position des Vertex auf die Texturkoordinaten der Heightmap, die zuvor an dem shader weiter gegeben wurde, umrechnet. Die Z Koordinate wird dann entsprechend des Wertes des Pixels der Textur angepasst. Gleichzeitig kann man dann auch Textursplatting anwenden.
Die Vorteile an diesem Terrain sind die das das Terrain deformierbar ist, da man schließlich nur die Pixelwerte in der Heightmap verändern muss. Außerdem wird nur wenig Speicher auf Grafikkarte für das Terrain missbraucht und der BUS wird kaum belastet. Und natürlich ist Geomipmapping auch ein sehr einfacher LOD Algo!
Bisher bin ich dazu gekommen alles davon um zu setzen was nichts mit Shadern zu tun hat! Nurnoch Instancing und den Shader der die Koordinaten umrechnet habe ich noch nicht geschrieben! Ich kenne mich mit Instancing und Shadern nicht sher gut aus, deswegen wäre es nett wenn mir jemand sagen könnte ob es denn überhaupt so funktioniert wie ich es mir vorgestellt habe
Auf jeden fall ist es eine gute alternative zum Geoclipmaping, leider wird die Zahl der Drawcalls bei größeren Terrains extrem groß!
Wenn die differenz von 2 Vertices die nebeneinander liegen 1meter entsprechen, und man eine Sichtweite von 500km haben will, muss man 32*32 Patches rendern, dies währen dann 1024 Drawcalls! Mit Frustum culling könnte man ein bischen mehr als die Hälfte der zu zeichnenden Patches reduzieren, jedoch sind das dann immer noch 500 drawcalls, was ich sehr hoch finde!