Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mesh zur Laufzeit erstellen in OpenGL (https://www.delphipraxis.net/88367-mesh-zur-laufzeit-erstellen-opengl.html)

Bastler 14. Mär 2007 18:09


Mesh zur Laufzeit erstellen in OpenGL
 
Hallo zusammen;

Ich habe eine recht einfache Frage, deren Antwort vllt. genauso einfach ist, mir aber momentan noch unbekannt ist.

Ich möchte während das Programm läuft Meshes erstellen*. Geht das? (Müsste eigentlich)
Die Frage ist: WIE?

Danke für Eure Tipps und Hinweise !

*) Konkretes Beispiel, ich möchte in einem Edit die Anzahl an Objekten eingeben, und diese sollen dann erstellt werden.

turboPASCAL 14. Mär 2007 18:13

Re: Mesh zur Laufzeit erstellen in OpenGL
 
Zwischenfrage :mrgreen:

Mit / in was OpenGL-API oder GLScene?

Bastler 14. Mär 2007 18:19

Re: Mesh zur Laufzeit erstellen in OpenGL
 
GLScene... sorry das ich das vergessen hatte :wink:

turboPASCAL 14. Mär 2007 19:16

Re: Mesh zur Laufzeit erstellen in OpenGL
 
Es gibt zB. TGLMesh mit dessen Hilfe kannst du dir ein Mesh zur Laufzeit bauen.

Delphi-Quellcode:
uses VectorGeometry, Vectortypes;

function Vector3f(x,y,z: single): TVector3f;
begin
  Vector3f[0] := x;
  Vector3f[1] := y;
  Vector3f[2] := z;
end;

function Vector4f(x,y,z,d: single): TVector4f;
begin
  Vector4f[0] := x;
  Vector4f[1] := y;
  Vector4f[2] := z;
  Vector4f[3] := d;
end;

procedure foo;
var
  v: TVertexData;
begin
  GLMesh1.mode := mmPolygon;

  v.coord := Vector3f(1,1,1);
  v.textCoord := XTexPoint;
  v.color := Vector4f(1,0,0,0);
  GLMesh1.Vertices.AddVertex(v);

  //...

  v.coord := Vector3f(0,1,0);
  v.textCoord := XYTexPoint;
  v.color := Vector4f(1,0,1,0);
  GLMesh1.Vertices.AddVertex(v);

end;

Bastler 14. Mär 2007 19:21

Re: Mesh zur Laufzeit erstellen in OpenGL
 
Ich hatte eigentlich weniger vor mir ein Mesh zu bauen, als mehr einfach ne BasicGeometry hinzuzufügen... geht das auch , und evtl etwas einfacher :gruebel: ???

Oxmyx 14. Mär 2007 19:57

Re: Mesh zur Laufzeit erstellen in OpenGL
 
Die Frage ist, was du überhaupt willst. Ein Mesh kannst du in OpenGL ganz einfach über eine Liste (glBeginList, glEndList) bauen, oder jedes Mal die Vertices, Indices, Texturkoordinaten, etc. von neuem zur Grafikkarte übertragen. Oder du legst einen Vertexpuffer (Indexpuffer, Texturkoordinatenpuffer, etc.) an.

Wenn du ein Objekt dagegen ganz einfach nur mehrmals anzeigen willst, musst du es einfach mehrmals rendern. :)

Bastler 16. Mär 2007 14:47

Re: Mesh zur Laufzeit erstellen in OpenGL
 
Ich möchte z.b. 2 Kugeln haben, sobald diese sich Treffen, soll eine dritte Kugel "entstehen"... ich hoffe es ist halbwegs verständlich... (Das mit dem Treffen und dem CollisionsManager ist nicht das Problem...)

Oxmyx 17. Mär 2007 13:11

Re: Mesh zur Laufzeit erstellen in OpenGL
 
In der Regel wirst du nur ein einziges Mesh einer Kugel haben. Wieso auch mehrmals die selben Daten im Speicher haben? Diese Kugel kannst du dann so oft du willst rendern. Dann sieht es so aus, als würde es mehrere Kugeln geben.

turboPASCAL 17. Mär 2007 13:37

Re: Mesh zur Laufzeit erstellen in OpenGL
 
@Oxmyx, hi :hi:

Er arbeitet mit GLscene. In GLScene gibt es auch einfache Basic Objecte, die kannst du entweder statisch erstellen oder dynamisch.

Ein GlScene Objekt kannst du auch im GlSceneeditor auf Visible = FALSE stellen.

Bastler 18. Mär 2007 20:52

Re: Mesh zur Laufzeit erstellen in OpenGL
 
Ja nur leider kommt das für mich in diesem Fall nicht in Frage, also jetzt wo gesagt wurde, das ich BasicObjects dynamisch ertsellen kann frage ich nochmal: wie??? :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:16 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz