Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Mai 16, 2024 03:35

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Engines als Komponente
BeitragVerfasst: So Okt 07, 2012 17:31 
Offline
DGL Member

Registriert: So Sep 26, 2010 16:19
Beiträge: 64
Programmiersprache: Pascal
Hallo Leute ;)
Ich brauche eure Hilfe. Ich habe mich entschlossen eine eigene 3D Engine mit euren echt super Header zu schreiben. Ich habe darüber nachgedacht, eine VCL Komponente zu schreiben. Ich habe aber noch viele Fragen :( (bin nicht der Meister im Komponenten Entwickeln :D)

Ich habe meine grobe Engine, die OpenGl vorbereitet und den Hintergrund rendert gemacht. Nun habe ich momentan 2 Fragen:

(1)Im Objektinspektor sieht mein ein Bild von den Properties. Ich möchte jetzt aber gerne Standartwerte in den Properties haben (z.B. ColorBits soll am Anfang immer 32 sein, also nicht 0).

(2)Außerdem weiß ich nicht, wie ich folgendes im Objektinspektor umsetzten kann:
|Hauptpunkt [...]
|->Unterpunkt1
|->Unterpunkt2
|->...

ein Beispiel:
|BackgroundColor [...]
|->Red
|->Green
|->Blue
|->Alpha

Ich habe es mit einen Record versucht:
Code:
  1.  
  2. type TUnColorRGBA=record
  3.   Red,Green,Blue,Alpha: single;
  4. end;
  5.  

Diesen habe ich nun so eingebunden
Code:
  1.  
  2. private
  3.   PBackgroundColor: TUnColorRGBA;
  4.   procedure SetBackgroundColor(Value: TUnColorRGBA);
  5. [...]
  6. published
  7.   property BackgroundColor: TUnColorRGBA read PBackgroundColor write SetBackgroundColor;
  8.  
  9. [...]
  10.  
  11. procedure TUnEngine.SetBackgroundColor(Value: TUnColorRGBA);
  12. begin
  13.   PBackgroundColor:=Value;
  14. end;
  15.  

Das Ergebnis ist, dass der Record nicht im Objektinspektor angezeigt.
Zwar kann ich die BackgroundColor später (in der Testanwendung) ändern:
Code:
  1.  
  2. var BGColor: TUnColorRGBA;
  3. begin
  4.   BGColor.Red:=0.3;
  5.   BGColor.Green:=0.4;
  6.   BGColor.Blue:=0.7;
  7.   BGColor.Alpha:=0;
  8.  
  9.   UnEngine1.BackgroundColor:=BGColor;
  10.  

Aber ich hätte das sehr gerne wie Oben im Objektinspektor :D


Ich hoffe, dass ich euch mit diesen langen Post nicht erschreckt habe. :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Engines als Komponente
BeitragVerfasst: So Okt 07, 2012 18:58 
Offline
DGL Member

Registriert: So Sep 26, 2010 16:19
Beiträge: 64
Programmiersprache: Pascal
Also das erste Problem wurde gelöst. http://podgoretsky.com/ftp/Docs/Delphi/D5/dg/property.html

Auf das zweite kann ich auch verzichten. Dann brauche ich keine Property-Editor machen.

Ich habe jetzt aber eine sehr wichtige Frage. Wie soll ich am besten die Objekte hinzufügen? Ich denke am besten ist eine Art Liste. Ich hatte auch eine sehr schmutzige Array-Idee. Ich würde Records machen, ein Array und ArrayCount hinzufügen und dann beim Rendern folgendes machen:

for i:=0 to ArrayCount-1 do begin
//Rendert das Objekt
end;

Kann ich das sauberer machen? Irgendwie mit Listen und nicht mit begrenzten Arrays? Am Ende möchte ich gerne so ein Objekt hinzufügen: Engine.AddQuad(Parameter...);


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Engines als Komponente
BeitragVerfasst: So Okt 07, 2012 19:50 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Also, erstmal vorweg, VCL eignet sich nicht für Echtzeitrendering. Dafür ist das Framework einfach nicht geschaffen. Der Mix von VCL-Komponenten und OpenGL-Kontexten ist bekannt dafür, langsam zu werden und/oder sonstige Probleme zu verursachen.

Dann ist es wichtig zu wissen, welche Delphi-Version du verwendest. Auf jeden Fall solltest du dir die Klasse TList anschauen, sofern sie vorhanden ist.

grüße

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Engines als Komponente
BeitragVerfasst: So Okt 07, 2012 20:04 
Offline
DGL Member

Registriert: So Sep 26, 2010 16:19
Beiträge: 64
Programmiersprache: Pascal
Hm, also ich verwende Delphi 2009 Professional.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Engines als Komponente
BeitragVerfasst: So Okt 07, 2012 20:05 
Offline
DGL Member

Registriert: So Sep 26, 2010 16:19
Beiträge: 64
Programmiersprache: Pascal
Meinst du, dass meine Anwendung aus einer Konsolenanwendung entstehen sollte?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Engines als Komponente
BeitragVerfasst: So Okt 07, 2012 20:20 
Offline
DGL Member
Benutzeravatar

Registriert: So Sep 26, 2010 12:54
Beiträge: 238
Wohnort: wieder in Berlin
Programmiersprache: Englisch
Vielleicht schaust Du Dir einfach mal GLScene an.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Engines als Komponente
BeitragVerfasst: So Okt 07, 2012 20:37 
Offline
DGL Member

Registriert: So Sep 26, 2010 16:19
Beiträge: 64
Programmiersprache: Pascal
GlScene kenne ich schon lange ;-)
Ich möchte aber meine eigene 3D Engine machen :)

Ich werde Versuchen das Rendern mit einer TList umzusetzen :)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.019s | 17 Queries | GZIP : On ]