Punkte aus X-Datei auslesen (Kollisionsabfrage)
-
Hi,
es geht um Kollision. Dazu brauche ich die Punkte aus meiner X-Datei, um die Kollision auch überprüfen zu können. Wenn man sich solch eine X-Datei im Editor anschaut, sieht das auch gar nicht soo schwierig aus, die Punkte auszulesen (stehen mit semikolon getrennt hintereinander). Jedoch müsste der Rechner die alle doch schonmal eingelesen und auch gespeichert haben, sonst könnte er es ja nicht immer wieder zeichnen. Und doppelt will ich die Punkte auch nicht laden.
Gibt es irgendeine Möglichkeit, auf den Vertexbuffer zuzugreifen, der die Punkte einer geladenen X-Datei beinhaltet?
Danke schonmal
-
ID3DXMesh::GetVertexBuffer,
ID3DXMesh::GetIndexBufferThe documentation rocks!
-
Danke, war genau das.
Aber wie kann ich denn jetzt einzelne Pixel aus dem Buffer holen? Kennt jemand vielleicht ein Tutorial dazu?
-
Original erstellt von Creon:
**Danke, war genau das.Aber wie kann ich denn jetzt einzelne Pixel aus dem Buffer holen? Kennt jemand vielleicht ein Tutorial dazu?**
Das solltest du (für Kollisionsabfragen) besser lassen, ansonsten GetRenderTargetData (Warum hat MS denn das nicht mit in die Doku geschrieben, sind die blöd? So sind die Leute gezwungen hier nach solche simplen Sachen zu fragen...)
-
Ok, danke, nur wie bekomm ich jetzt meine Punkte aus dem IDirect3DSurface8 Interface heraus? Eine der Funktionen heißt GetPrivateData und der Parameter für die Daten ist vom Typ 'void*'. Ist das die Funktion? Wenn ja, was muss ich da denn übergeben?
-
In der 3D-Grafik macht man die Kollisionen nicht auf Pixelbasis, sondern auf Dreiecksbasis!
-
OK, aber ich muss dann doch immernoch irgendwie die Position der Dreiecke herausfinden.
-
Original erstellt von TomasRiker:
ID3DXMesh::GetVertexBuffer,
ID3DXMesh::GetIndexBuffer@Creon: Bitte nicht unnötig dumm stellen...
-
Vorschlag: Warum machen wir kein Codearchiv in dem Funktionen und Codeschnipsel gespeichert werden, um dem Anfänger den Einstieg zu erleichtern.
-
-
Kollisionsabfragen auf Dreiecksbasis sind nicht nur ziemlich aufwändig sondern normalerweise auch nicht nötig.
Probiers mal mit BoundingSpheres oder BoundingBoxes.
Ist nicht nur einfacher sondern auch schneller.