![]() |
[Direct3D] Mit DX Kugel erzeugen
Hallo,
ich versuche mich in Direct3D/DX ein zu arbeiten. Bisher hatte ich nur mit Würfeln/Vierechen(2 Dreiecke) und Pyramiden/Dreiecken zu tun. Nun möchte ich allerdings auch eine Kugel oder Zylinder bauen, allerdings weiß ich nicht wie. Muss ich das auch aus der Grundform Dreieck machen oder gibt es da irgendeine Funtion/Prozedur/Typ/Fertiges Objekt? Zurzeit benutze ich Delphi 6 Personal und den DirectX 8 Header vom Tutorial in der DSDT. |
Re: [Direct3D] Mit DX Kugel erzeugen
Ich weiß nicht, ob die Funktion in deinen Headern enthalten ist, aber es gibt auf jeden Fall solch eine D3DX-Funktion (in Managed DriectX wäre es zum Bleistift Mesh.Sphere). Einfach mal im DX-SDK nach Sphere/Cylinder suchen.
|
Re: [Direct3D] Mit DX Kugel erzeugen
So, ich hab jetzt die beiden Dateien, die ich eingebunden hab durchsucht und was gefunden.
Delphi-Quellcode:
Allerdings kapier ich nicht was in die Parameter rein soll.
//-------------------------------------------------------------------------
// D3DXCreateSphere: // ----------------- // Creates a mesh containing a sphere. The sphere is centered at the // origin. // // Parameters: // // pDevice The D3D device with which the mesh is going to be used. // Radius Radius of the sphere (should be >= 0.0f) // Slices Number of slices about the main axis // Stacks Number of stacks along the main axis // ppMesh The mesh object which will be created // ppAdjacency Returns a buffer containing adjacency info. Can be NULL. //------------------------------------------------------------------------- function D3DXCreateSphere(const pDevice : IDirect3DDevice8; Radius : Single; Slices, Stacks : Cardinal; out ppMesh : ID3DXMesh; out ppAdjacency : ID3DXBuffer) : HResult; stdcall; So hab ich es verstanden:
Delphi-Quellcode:
Aber was bedeuten die Sachen genau? In der MSDN hab ich auch nichts kapiert.
D3DXCreateSphere(1.00,
{kA (hab irgendeine Zahl eingesetzt)}, {ist das die Höhe ?} {kA (hab irgendeine Zahl eingesetzt)}, {ist das die Nähe vom Betrachter?} {kA (irgendeine Adresse zu nem Pointer)}, 0); |
Re: [Direct3D] Mit DX Kugel erzeugen
Zitat:
Der Radius duerfte klar sein. Slices und Stacks sind Werte, die die Detailgenauigkeit der Kugel angeben. Je groesser die beiden Werte, desto mehr Vertices, desto Detaillierter die Kugel, desto langsamer das Rendern. Die Adresse zu nem Pointer ist der Zeiger auf dein Mesh. Darin wird die Kugel gespeichert, sodass du sie anschliessend zeichnen kannst. Der letzte Parameter ist ein Stream, der nicht unbedingt gegeben sein muss. Darin stuenden jeweils die 3 Nachbaren eines jeden Vertices. Ich wuerde dir uebrigens empfehlen, vor allem fuer den Einstieg, Managed DirectX zu verwenden. Nicht nur, dass der Code leichter lesbar wird, sondern auch, weil alles objektorientiert strukturiert ist, und somit auch bspw. die D3D-Extention in die entsprechenden Klassen eingebaut ist. Ein Beispiel zu deinem Fall:
Code:
vs
D3DXCreateSphere(Device, 1.0, 36, 36, &Mesh, NULL)
Code:
Funktionen liegen bei den Klassen, zu denen sie gehoeren, und bietet damit mehr lesbarkeit und groessere Uebersicht. ;)
Mesh.Sphere(Device, 1f, 36, 36);
greetz Mike |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz