![]() |
OpenGL Beschleunigungs Routinen oder Codeoptimierung
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo habe ein Programm in OpenGL geschrieben das 3D Koordinaten Punkte aus einer Datei ausliest und am Bildschirm wahlweise als Punktliste oder Linestrip usw. anzeigt.
Mein Problem ist nur dass das der Render vorgang beim Bewegen in der Punktwolke relativ lange dauert, d.h. es ist keine richtig Flüssige animation. Die Punkte werden beim Programmstart aus dem File in eine Stringliste kopiert, somit liegen sie im speicher d.h. das Programm muss auch nicht auf die Festplatte zugreifen. Es ist sozusagen das Grundgerüst für ein Visualisierungsprogramm. Danke für eure Bemühungen PS.: Weiss jemand wie ich *.TIF Dateien als Texturen in OpenGL verwenden kann. |
Re: OpenGL Beschleunigungs Routinen oder Codeoptimierung
wenn du die datei, aus der die punkte gelesen werden, auch noch mitschicken würdest, wäre ich dir sehr dankbar :wink:
|
Re: OpenGL Beschleunigungs Routinen oder Codeoptimierung
Zitat:
![]() |
Re: OpenGL Beschleunigungs Routinen oder Codeoptimierung
Liste der Anhänge anzeigen (Anzahl: 1)
:oops: Ok sorry
Um die Datei erfolgreich mit OpenGL zu laden musst du bitte in den Ländereinstellungen das Dezimal Trennzeichen von "," auf "." umstellen. Danke für deine Hilfe edit: Habe das falsche file hochgeladen ist nun korrigiert. :oops: |
Re: OpenGL Beschleunigungs Routinen oder Codeoptimierung
Zitat:
Delphi-Quellcode:
Sonst, solltest du uns etwas von dem Code schicken, um bessere Hilfe zu bekommen.
type T3dPunkt = array[0..2]of Single;
var Punkte : array of T3dPunkt; |
Re: OpenGL Beschleunigungs Routinen oder Codeoptimierung
Ok danke erstmal, das projekt habe ist als anhang im ersten post von mir eingefügt.
Bin für jede weitere optimierung dankbar. |
Re: OpenGL Beschleunigungs Routinen oder Codeoptimierung
Zu der PointList Funktion:
Viel schneller wäre es wenn du es so machen würdest:
Delphi-Quellcode:
// in unit 2
uses ....,opengl,.....; var From2 : TForm2; _Mesh_Mode : Cardinal = GL_POINTS; implementation uses unit1; procedure TForm2.ComboBox1Change(Sender: TObject); begin case ComboBox1.ItemIndex of 0:_Mesh_Mode := GL_POINTS; 1:_Mesh_Mode := GL_LINES; 2:_Mesh_Mode := GL_LINE_STRIP; 3:_Mesh_Mode := GL_LINE_LOOP; 4:_Mesh_Mode := GL_TRIANGLES; 5:_Mesh_Mode := GL_TRIANGLE_STRIP; 6:_Mesh_Mode := GL_TRIANGLE_FAN; 7:_Mesh_Mode := GL_QUADS; 8:_Mesh_Mode := GL_QUAD_STRIP; 9:_Mesh_Mode := GL_POLYGON; end; end; // in unit1 procedure tform1.pointlist; var i: integer; begin glBegin(_Mesh_Mode); //(stringreplace(templist[1],'.',',',[rfReplaceAll])) for i:=0 to numofpoints do begin templist.DelimitedText:=finalpoint[i]; glcolor3f(r,g,b); glloadname(Punkt); //neu glvertex3f(tpointlist[i,1],tpointlist[i,2],tpointlist[i,0]); //glvertex3f(tpointlist[i,2],tpointlist[i,3],tpointlist[i,1]); //glvertex3f(strtofloat(templist[2]),strtofloat(templist[3]),strtofloat(templist[1])); end; glend; end; |
Re: OpenGL Beschleunigungs Routinen oder Codeoptimierung
wie du warscheinlich gesehen hast wollte ich das auch schon mit einem dynamischen array lösen.
danke für deinen vorschlag sieht echt super aus, bin selbst stundenlang davor gehock und habs einfach nicht geschafft. nochmal danke. |
Re: OpenGL Beschleunigungs Routinen oder Codeoptimierung
ein problem habe ich allerdings noch
irgendwie gibts da ein problem mit den zuweisungen der cardinal werte GL_POINTS
Delphi-Quellcode:
procedure TForm2.ComboBox1Change(Sender: TObject);
begin case ComboBox1.ItemIndex of 0:_Mesh_Mode := GL_POINTS; 1:_Mesh_Mode := GL_LINES; 2:_Mesh_Mode := GL_LINE_STRIP; 3:_Mesh_Mode := GL_LINE_LOOP; 4:_Mesh_Mode := GL_TRIANGLES; 5:_Mesh_Mode := GL_TRIANGLE_STRIP; 6:_Mesh_Mode := GL_TRIANGLE_FAN; 7:_Mesh_Mode := GL_QUADS; 8:_Mesh_Mode := GL_QUAD_STRIP; 9:_Mesh_Mode := GL_POLYGON; end; hatt jemand eine ahnung warum?? |
Re: OpenGL Beschleunigungs Routinen oder Codeoptimierung
Welches Problemm ?? :gruebel:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:28 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 by Thomas Breitkreuz