Ein paar Fragen eines 3D-Neulings
-
Hallo, ich habe mit DX angefangen und ein paar Fragen (die sich eher auf 3D - Programmierung im Allgemeinen beziehen)
-
Was genau sind Vertex Buffer? Ich habe durch Googlen erfahren, dass es Listen mit Verticen im Grafikkartenspeicher sind, was folgende Vorteile hat: Dadurch dass sie "alle auf einmal" gerendert werden und der Grafikkartenspeicher sehr schnell ist, ist das Rendern sehr schnell und sie können ohne Gebrauch von der CPU zu machen transformiert werden. Stimmt das so? Wann genau setzt man sie ein?
-
Im ZFX Tutorial wird der BSP-Baum angesprochen, der ja eigentlich kein Ding ist. Nun ist dieser logischerweise nicht für Outdoor-Scenes geeignet. Ist es da nicht am einfachsten alle Polygone des Levels verschiedenen regelmäßigen Quadern zuzuordnen, so dass anhand des View Frustrums sehr schnell festgestellt werden kann welche Polygone gerendert werden? Tutorials?
-
-
DasPinsch schrieb:
Hallo, ich habe mit DX angefangen und ein paar Fragen (die sich eher auf 3D - Programmierung im Allgemeinen beziehen)
- Was genau sind Vertex Buffer? Ich habe durch Googlen erfahren, dass es Listen mit Verticen im Grafikkartenspeicher sind, was folgende Vorteile hat: Dadurch dass sie "alle auf einmal" gerendert werden und der Grafikkartenspeicher sehr schnell ist, ist das Rendern sehr schnell und sie können ohne Gebrauch von der CPU zu machen transformiert werden. Stimmt das so? Wann genau setzt man sie ein?
Ein VB ist eine D3D Ressource zur Speicherung von Vertices. Der Vorteil ist einfach, dass er, wie alle Ressourcen, im VRAM der Grafikkarte oder AGP Speicher untergebracht werden kann. Dadurch hat die GraKa vorm Rendern wesentlich schneller Zugriff auf die Daten und es muss nicht erst rumkopiert werden.
- Im ZFX Tutorial wird der BSP-Baum angesprochen, der ja eigentlich kein Ding ist. Nun ist dieser logischerweise nicht für Outdoor-Scenes geeignet. Ist es da nicht am einfachsten alle Polygone des Levels verschiedenen regelmäßigen Quadern zuzuordnen, so dass anhand des View Frustrums sehr schnell festgestellt werden kann welche Polygone gerendert werden? Tutorials?
Google mal nach Quad Trees
-
Ok, Quadtrees/Octrees waren mir schon in den Sinn gekommen. Meine Frage ist nun was sinnvoller ist:
a) einen Quad-/Octree benutzen oder
b) die Welt "fest" einteilen (d.h. nach einem bestimmten Muster, z.B. dass die Quadrate/Quader immer gleich groß sind), so dass anhand der Kameraposition recht leicht bestimmt werden kann, welche Teile gezeichnet werden müssen und diese auch gleich von Hinten nach Vorne gezeichnet werden können.Das 2. Problem ist, wie die Polygone in die Datenstruktur gespeichert werden sollen. Entweder man speichert die konkreten Werte, oder - meiner Meinung nach besser - lediglich den Index der durchnumerierten Polygone. Nun kann es sein, dass ein Polygon in mehreren "Leafes" auftritt. Hier gäbe es jetzt auch wieder mehrere Möglichkeiten:
a) man zeichnet diese Polygone einfach mehrfach
b) man speichert den Index der bereits gezeichneten Polygone und guckt ob diese nicht bereits vorhanden ist
c) man splittet die Polygone ggf. so dass sie "genau passen"Kann mir denn einer ein paar Tipps geben oder einen Artikel der dieses Thema behandelt geben?
MfG
-
Ich würd meinen Culling auf Polygon Ebene ist heute reichlich out.
Bye, TGGC (Wähle deine Helden)
-
? Ich hatte doch auch nicht vor auf Polygonebene zu Cullen, sondern die Polygone in größere "Bereiche" einzuordnen, welche dann als ganzes gecullt werden!
Oder was meinst du?
-
naja, bsp und outdoor ist ja nicht mal sooooooo abwegig, denk ich.. kommt ganz drauf an was du machen willst. rtcw, sof 1 bzw 2, call of duty.. die hatten auch außenwelten..
-
Also deine Beschreibung hört sich so an, als hättest du einfach n Polygone, von denen du später m zeichnest. Besser wären evtl. n "Batches", die jeweils komplett gezeichnet werden, sobald teilweise sichtbar. Sowas könnte z.b. ein TriangleStrip mit gleicher Textur oder gleich ein ganzes 3D Modell sein.
Bye, TGGC (Dem beste BdT)