Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
struct GeometryVertex { tbVector3 Position; tbVector3 Normal; tbVector2 Texture; static const DWORD VF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1; }; struct InstanceVertex { tbMatrix Position; tbMatrix Texture; }; |
Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.
... und diese Signatur kürzer!
- übersichtlicher
- logischer
- verständlicher
Das ist für mich jetzt ein bisschen gegensätzlich! Kann ich jetzt mein Struct als Typangabe verwenden oder muss ich mir dafür ein neues aus D3DVERTEXELEMENT9 basteln? Wenn ich das bei deinem ersten Link richtig verstanden habe, dann hat das hier:Deine instance vtx struct sollte so funktionieren.
Du musst eben die richtigen vtx declarations festlegen, also ein Array aus D3DVERTEXELEMENT9.
C-/C++-Quelltext |
|
1 |
static const DWORD VF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1; |
Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.
... und diese Signatur kürzer!
- übersichtlicher
- logischer
- verständlicher
Zitat
Kann ich jetzt mein Struct als Typangabe verwenden oder muss ich mir dafür ein neues aus D3DVERTEXELEMENT9 basteln?
Zitat
dann hat das hier [...]die gleiche Bedeutung wie ein D3DVERTEXELEMENT9-Array!?
Zitat
Wie bekommt D3D eigentlich mit, welchen Vertextyp die beiden Arrays haben?
Zitat
Wenn ich meine 6 Seiten aber hintereinander in einen Vertex Buffer packen würde, würden doch für jede Instance alle 6 Seiten gezeichnet.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »iSmokiieZz« (19.05.2014, 00:09)
Du meinst, ich soll erst mal die kompletten Würfel zeichnen (natürlich mit normalen Culling - das funktioniert doch hoffentlich mit der Programmable Pipeline ) Über die DrawPimitive-Methode werde ich mich mal bei MSDN informieren...Für solch penibles Occlusion Culling musst du kompliziertere Techniken einsetzen.
Scene Partitioning kann dir helfen. Außerdem kannst du bei DrawPrimitive Grenzen angeben.
Im DirectX SDK ist übrigens ein sehr ausführliches Beispiel mit unterschiedlichen Methoden.
Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.
... und diese Signatur kürzer!
- übersichtlicher
- logischer
- verständlicher
Zitat
Du meinst, ich soll erst mal die kompletten Würfel zeichnen (natürlich mit normalen Culling - das funktioniert doch hoffentlich mit der Programmable Pipeline
Quellcode |
|
1 2 3 4 5 |
struct InstanceVertex { tbMatrix Position; tbMatrix Texture; }; |
speziellen vertex shader
Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.
... und diese Signatur kürzer!
- übersichtlicher
- logischer
- verständlicher
Zitat
Muss ich einen selber programmieren? Oder macht D3D9 schon für mich?
Zitat
Bin gerade dabei das Programm umzuschreiben ... wie kann ich das machen, wenn ich später andere Geometries einbaue und die dann auch mit Geometry Instancing gerendert werden sollen? Kann ich im Instancevertex auch angeben, welches Modell er nehmen soll? Oder eine Position im Geometrybuffer, wo das Modell zu finden ist?
Lass solche persönlichen Angriffe lieber bleiben, meine sind härter.
... und diese Signatur kürzer!
- übersichtlicher
- logischer
- verständlicher
Nein, das geht leider nicht. Die GPU muss beim Ausführen des kompilierten Shader Codes bereits dessen Input kennen und beschreiben können. Somit ist es unmöglich, innerhalb des Shaders noch auf veränderliche Buffer zuzugreifen.Zitat
Könnte man sich nicht einen Shader programmieren, der aus dem Instance Vertex die Position im Geometrybuffer herausfiltert und dann das "richtige" Modell zeichnet? Ist mir erstamal egal, wie schwierig das würde...
Werbeanzeige