Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ist NonVCL etwa schneller als VCL ? (https://www.delphipraxis.net/68624-ist-nonvcl-etwa-schneller-als-vcl.html)

Corpsman 2. Mai 2006 20:37


ist NonVCL etwa schneller als VCL ?
 
Hallo,

Ich arbeite mich gerade in die OpenGL Programmierung ein.

Und da sind eigentlich alle Beispiele die es gibt in NONVCL Programmiert, also so das die Exe gerade mal 20-30 kb hat.

Nun ist das Ansich ja nicht schlimm, nur halt sehr ungewohnt für mich , da ich das so bisher noch nie Programmiert habe.

Also habe ich mehr oder weniger via Copy Paste die NOnvcl Projekte in ein "Normales" Projekt kopiert.

Läuft auch.

Das Prob ist nur das es nu Ruckelt.

Und vorher lief es einwandfrei Flüssig.

Habe ich da nun einen Fehler im Kopieren gemacht , oder ist das echt so das die "Normalen" Projekte langsammer sind.

Der einzige Unterschied den die beiden Projekte haben ist eigentlich nur das die NONVCL version ja ne endlosschleife hat die immer wieder Render aufruft.

da ich diese endlosschleife ja bei den Normalen Projekten net habe habe ich den Code in

Application.OnIdle

eingefügt.

mkinzler 2. Mai 2006 20:39

Re: ist NonVCL etwa schneller als VCL ?
 
OniDle ist u:u. schelcht, da die Geschwindigkeit nicht meher linear ist. Ein Timer wäre u.U. besser.

markusj 2. Mai 2006 20:40

Re: ist NonVCL etwa schneller als VCL ?
 
Es ist sogar mir bekannt, dass die VCL bequem aber langsam ist ... Analog zu Windows

Corpsman 2. Mai 2006 20:45

Re: ist NonVCL etwa schneller als VCL ?
 
Habs mit nem Timer gemacht dann ist es noch schlimmer !!

d.h. ich mus das alles in diesem NonVCL zeug Programmieren, und mich an das alles gewöhnen ?

mkinzler 2. Mai 2006 20:54

Re: ist NonVCL etwa schneller als VCL ?
 
In einem OpenGl-Programm benutzt du im Normalfall ja weniger (Windows-)Gui-Elemente. Es gibt aber einige Delphi-OpenGL-Frameworks die dir Grundlegende Funktionen bieten.

Daniel G 2. Mai 2006 21:15

Re: ist NonVCL etwa schneller als VCL ?
 
Zitat:

Zitat von Corpsman
d.h. ich mus das alles in diesem NonVCL zeug Programmieren, und mich an das alles gewöhnen ?

Ich hab's in nem anderen Thread schon geschrieben:

non - vcl hilft dir, das Prinzip hinter Windows zu verstehen, wie es arbeitet, warum es im Prinzip nur Fenster gibt und wie die Nachrichtenschleife funktioniert. Nach 2 Monaten passt das schon und du fühlst dich ganz wie zuhause. Am Besten guckst du dir die NON - VCL Tuts von Luckie an.

Bernhard Geyer 2. Mai 2006 21:53

Re: ist NonVCL etwa schneller als VCL ?
 
Zitat:

Zitat von markusj
Es ist sogar mir bekannt, dass die VCL bequem aber langsam ist ... Analog zu Windows

Ich würde nicht generell von langsam reden. Sie ist nur für manche Dinge nicht ausgelegt. Und dazu gehört neben Treiber-Programmierung u.a. auch Spiele-Programmierung mit DirectX. Dazu gibt es aber auch Klassenmodelle wie DelphiX welche sich dieses Mangels annehmen. Grundsätzlich kann man aber auch mit der VCL (GUI-)Programme schreiben die fast nicht langsamer sind als Non-VCL-Programme. Man muß nur die Fallen kennen bzw. die Vorteile eines Objektmodells zu nutzen wissen.

Corpsman 3. Mai 2006 08:03

Re: ist NonVCL etwa schneller als VCL ?
 
OK da bleibt mir nichts anderes Übrig als mich in die NOnVCL Programmierung ein zu arbeiten.

Habt ihr Links zu den Tutorials oder mus ich mir die erst suchen ?

MagicAndre1981 3. Mai 2006 08:06

Re: ist NonVCL etwa schneller als VCL ?
 
Schau mal auf Luckie's Homepage.

turboPASCAL 3. Mai 2006 08:40

Re: ist NonVCL etwa schneller als VCL ?
 
Zitat:

Also habe ich mehr oder weniger via Copy Paste die NOnvcl Projekte in ein "Normales" Projekt kopiert.

Läuft auch.

Das Prob ist nur das es nu Ruckelt.

Und vorher lief es einwandfrei Flüssig.

Habe ich da nun einen Fehler im Kopieren gemacht , oder ist das echt so das die "Normalen" Projekte langsammer sind.

Der einzige Unterschied den die beiden Projekte haben ist eigentlich nur das die NONVCL version ja ne endlosschleife hat die immer wieder Render aufruft.
Also ich kann mich nicht beschweren, meine GLscene Projekte laufen alle flüssig und schnell. Auch was ich mit DelphiX unter VCL hinbekommen hab ist von der Geschwindigkeit einwandfrei.

Was ich jetzt einfach mal Annehme ist das dein Programm etwas Unoptimiert ist. Wenn Du hier mal den Code zur verfügung stellst könnte man nachschauen wie was wo und event. warum...
OpenGL-Projekte in nonVCL aufzubauen ist eigentlich auch kein Problem es gibt schöne Tuturials und Codevorlagen.
zB. hier: http://www.sulaco.co.za/

Der Nachteil liegt bei nonVCL darin das man alles selbst machen muss. (nix mit Click, Click, fretig :stupid: )

Grundvorraussetzung sind aber ein wenig nonVCL-Kentnisse im Bezug auf den Aufbau und das Messagehandling von Fenstern ( Windows ;) ).

Corpsman 3. Mai 2006 10:52

Re: ist NonVCL etwa schneller als VCL ?
 
Liste der Anhänge anzeigen (Anzahl: 2)
So hier sind die Files, aber Compilieren dürftet ihr sie net können.

_Sebastian_ 3. Mai 2006 11:13

Re: ist NonVCL etwa schneller als VCL ?
 
Ansich spricht nichts dagegen das Rendern von Opengl im OnIdle Event zu erledigen. Du musst nur die Done Variable auf false setzten. Also mitteilen das du noch nicht fertig bist.

Auf Delphigl gibt es Vorlagen für Opengl Templates die mit der VCL umgesetzt sind.

Corpsman 3. Mai 2006 13:50

Re: ist NonVCL etwa schneller als VCL ?
 
Ich habe nu einen TDXTimer eingesetzt und drendere mit dem dann geht es auch recht gut.

Corpsman 3. Mai 2006 14:09

Re: ist NonVCL etwa schneller als VCL ?
 
@ : _Sebastian_

Ich habe grad mal zum Spass das Done:= false gesetzt. So ganz verstanden habe ich nicht warum ich das machen mus aber die Wirkung ist gigantisch.

THX jetzt ist es so wie ich das wollte.

Florian H 3. Mai 2006 14:33

Re: ist NonVCL etwa schneller als VCL ?
 
Afair meint done=true ja, dass die Schleife überhaupt erst noch weiter läuft, oder?
Wenn das nicht gesetzt ist, ist sie nach dem ersten Durchlauf fertig und dein 'ruckeln' sollte/dürfte eigentlich gar nicht auftreten, weil ja eh nur 1x gezeichnet wurde.. aber ich hab mir ehrlichgesagt den QT nicht angeschaut (ich bin tot. Infoklausur über Prolog .. ieks).

_Sebastian_ 3. Mai 2006 14:59

Re: ist NonVCL etwa schneller als VCL ?
 
Wenn du im OnIdle das done auf false setzt, dann hast du quasi ne endlosschleife, weil OnIdle sofort wieder aufgerufen wird. Wird done auf True gesetzt wird anschileßend die Windowsbotschaften etc ausgeführt.

Guck dir sonst mal in der Delphihilfe TApplication.OnIdle an.

Du solltest deinen code aber nochmal überprüfen was du wie kopiert hast. Hab das nur kurz überflogen, aber ich meine da zwei rendermethoden gefunden zu haben. Eigentlich kannst du alles zum rendern im OnIdle Event unterbringen.
Über das OnIDle kommst du auch einfacher mit der TApplicationEvents Komponente.

Die VCL hat auch für Spiele bzw. OpenGL programmierung ihre daseinsberechtigung, da man sich halt nicht groß um den nervigen kram wie fenster erstellung und benutzereingaben kümmern muss.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 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