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

Aktuelle Zeit: Fr Jul 18, 2025 06:41

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



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Sind Bytes Langsam
BeitragVerfasst: Fr Sep 19, 2003 20:19 
Hi!
Irgendwo in der delphi help (glaube da wo alle die numerical types gelistet sind) steht das man immer cardinals und integers gebrauchen sollte weil der PC 32 bit ist -> Cardinals+ints sind schneller und besser für denn PC.

Ist das wirklich so ein unterschied oder kann mann ohne bedenken bytes etc verwenden.

Es ist mir klar das wenn ich eine PartikelEngine mit 1000000 partikels schreibe das man da bytes gebraucht wegen memory. Ich meine eher so generell in OGL.

Danke

mfg
Conspirator


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 20, 2003 01:23 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
Wenn Du den Compiler optimieren lässt, richtet er sowieso alle Speicher-Grenzen auf DWORD (entspricht 32-Bit Cardinal) aus. So kann es also durchaus sein, das ein Byte-Wert letztendlich vom Compiler dann doch als Interger bzw. Cardinal verwendet wird. WEnn nicht, ist ein Byte sicherlich langsammer, allerdings nicht in der Zuweisung. Wenn Du jedoch einen Speicher-Bereich vona nach b Byte-Weise kopierst, dann wird die Sache sicherlich langsam.

Im Klartext: Wenn Du ein Byte brauchst, wegen der Byte-Typischen Grenzen, dann verwende ein Byte und kümmer Dich nichtmehr drum. Ansonsten, was spricht gegen die Verwendung von Cardinals / Integers?

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 20, 2003 10:26 
Offline
DGL Member

Registriert: Mo Sep 15, 2003 18:37
Beiträge: 21
Du kannst ja die Daten als Byte speichern aber sie als 32bit DWord behandeln! :wink:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 20, 2003 10:27 
Offline
DGL Member

Registriert: Mo Sep 15, 2003 18:37
Beiträge: 21
Noch was vergessen! Wie wäre es mit MMX?
Du kannst 10 Bytes auf einmal bearbeiten.
Für ne PartikelEngine ist MMX Optimierung eh MUSS!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 20, 2003 11:33 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Mal abgesehen von der Geschwindigkeit halte ich Bytes für eine Partikel Engine ziemlich ungeeignet. Da du in einem Byte maximal 256 verschiedene Werte haben kannst. Und bei sich bewegenden Partikeln ist diese Auflösung einfach viel zu gering. Ich würde von daher auf jeden Fall ein Single empfehlen. Es hat eine ausreichende Auflösung und ist nur 4 Bytes groß. In der aktuellen CT ist auch ein Artikel über die Geschwindigkeit von einigen Compilern drin. Bei Fließkommaberechnungen liegt Delphi sehr gut im rennen. Allerding bei reinen Integerberechnungen stinkt es ziemlich ab. (Was ich recht erschrekend fand) :shock:

Das Nächste was auf keinen Fall so klappen wird sind 10.000.000 Partikel. Das ist doch fern jeder Realität. Ich will deine Träume zwar nicht zerstören aber du wird wahrscheinlich 10 Sekunden benötigen um solch eine Anzahl EIN Mal zu rendern! Morderne Grafikarten haben zwar laut Chipspezifikationen die Möglichkeit ca. 250 - 300 Millionen Dreiecke in der Sekunde zu rendern aber in der Realität wirst du, unter Idealbedingungen, maximal 130-160 Millionen Dreicke hinbekommen. Und das auch nur wenn diese statisch auf der Grafikkarte liegen. Mal ganz davon abgesehen, dass man ab 5.000 Partikeln kaum noch Unterschiede erkennen kann. Ist das für die Spielewelt vollkommen auseichen und dort schon teilweise übertrieben.

Und bei 5.000 oder 100.000 Partikeln kannst du die Größe des Datentyps ziemlich vernachlässigen. Du solltest nur den Rest deine Quellen ausreichend optimieren. Und kopiere nach Möglichkeit so wenig wie möglich Speicher das dauert am längsten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 20, 2003 14:57 
Offline
DGL Member

Registriert: Mo Sep 15, 2003 18:37
Beiträge: 21
Wie schon gesagt MMX ist MUSS dafür!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 20, 2003 15:05 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
TheBlackRave hat geschrieben:
Wie schon gesagt MMX ist MUSS dafür!

Welchen Grund gibt es, bei nem OGL-Partikelsystem MMX zu nutzen?MMX war und ist eines der überbewertetsten Features der letzten Jahre.Wenn überhaupt ne Optimierung der eigenen Matrizenberechnungen, dann entweder 3DNow! oder SSE(2), die weitaus besser sind als MMX.
Und davon mal abgesehen spielen bei einem Partikelsystem die paar Berechnungen die man selbst macht ne stark untergeordnete Rolle.Hier sind eher Sachen wie Dreiecksdurchsatz und v.a. die Füllrate des 3D-Beschleunigers ausschlaggebend.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 20, 2003 15:42 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Im NVidia SDK gibt es auch Demos, bei denen das Partikelsystem vollständig im Vertex Program berechnet wird. Aber in den meisten Fällen ist das gar nicht nötig, weil die Partikel ihre Wirkung hauptsächlich durch die Texture und die Überblendungen erzielen und gar nicht unbedingt tausende Partikel notwendig sind. Bei UT2003 wird zum Beispiel bei vielen Partikeln noch eine Schattentexture draufprojektiert, so daß es aussieht als würde das Licht durch die Partikel Wolke scheinen. Man kann auch selber die Partikel in eine Texture rendern, so daß man den Schatten von Rauch an der Wand sieht. Ich denke,daß man eher auf solche Effekte Wert legen sollte, als 100.000 Partikel zu verwenden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Sep 21, 2003 19:19 
Offline
DGL Member

Registriert: So Sep 21, 2003 18:29
Beiträge: 15
Wohnort: Süd Afrika
In der Partikel Engine die ich gerade schreibe gebrauche ich
einfach nur gl_points. Ich weiss macht nicht viel sinn, ich wollte
aber erstmal denn Grundgedanken hinkriegen. Von 3dNow optimierungen bin ich leider noch ein gutes Stück weg :( Das mit dem
byte ist einleuchtend :D

Danke
mfg EternalLearner (aka Conspirator)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Sep 21, 2003 21:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
EternalLearner hat geschrieben:
In der Partikel Engine die ich gerade schreibe gebrauche ich
einfach nur gl_points. Ich weiss macht nicht viel sinn, ich wollte
aber erstmal denn Grundgedanken hinkriegen.


Das würde ich so nicht behaupten! Mit den Extensions GL_NV_point_sprite und GL_ARB_point_sprite kannst du einfache Points mit Texturen belegen. Und mit den Extension GL_ARB_point_parameters und GL_EXT_point_parameters passen sich die Punkte sogar automatisch in der Größe an.

Vom Prinzip her ist das sogar noch besser als Quads. Weil Points schneller gerendert werden düften und als VBO's sind die sogar noch richtig klein und weniger rechenintensiv, da du nur einen Vertex berechnen musstest. Die Texturkoordinaten würden dann auch nicht benötigt werden weil sie als Pointsprite die Textur standard komplett darstellen würden.

PS: GL_ARB_point_sprite ist in der Hardware noch nicht verfügbar, da dies erst in OpenGL 1.5 erschienen ist. Das können die Treiber aber noch nicht.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.007s | 15 Queries | GZIP : On ]