ProSpeed.dll
Wenn sie Fragen und Anregungen zu meiner ProSpeed DLL oder zu den Profan²-Sourcecodes und Demos haben, dann sind sie hier richtig. Auch neue Vorschläge sind jederzeit willkommen. Und bitte mit richtigem Namen und Email-Adresse einschreiben. Danke.
  Suchen
 Zurück zur Übersicht
 AutorThema: Sprites im Hintergrund aufbauen
Thomas Ungerböck
Datum:10.09.02 21:56 Antwortenals Email verschicken (Kerzenlicht@Chello.at) 


Hallo Frank
Hast du vielleicht eine Idee wie ich eine Anzahl von Sprites im Hintergrund aufbauen und dann gleichzeitig auf dem Schirm
bringen kann.
Habs bisher probiert mit:
 Mcls 1024,768
   Startpaint -1
Schleife
     InitSprite .....
     SetBackAutoCollision ... 
     SpriteToHDC ....
     SetSpriteFixMode ... 
EndeSchleife
   Endpaint
Habs noch ein bisserl herumprobiert, aber es kommt immer Blödsinn raus. Irgendwie fehlt mir hier der Funken.


Gruß Thomas



Moritz Kersten
Datum:11.09.02 22:20 Antwortenals Email verschicken (IsNoMK@gmx.de) 


Hallo Thomas,

Frank wurde am Mittwoch operiert und hat sich seit dem noch nicht zurück gemeldet (ich hoffe mal es geht im Gut !).

Zu deinem Problem: Ich schätze mal die Grafiken im Hintergrund aufbauen wird nicht das Problem sein, sondern die ganzen Sprites in der Schleife erstellen zulassen. Die Hürde hier liegt in den Handles, da man ja keine variablen Variablennamen benutzen kann. Die ablösung sollte hier eine Bereichsvariable schaffen, in der schleife das ergebnis von @initsprite... schön der Reihe nach in die Bereichsvariable kopieren und im nachhinein alle rauskopieren. Ok, ist natürlich auch nicht das wahre aber anders geht es wohl leider nicht.

Moritz


Thomas Ungerböck
Datum:11.09.02 19:59 Antwortenals Email verschicken (Kerzenlicht@chello.at) 


Hallo Moritz
<Frank wurde am Mittwoch operiert und hat sich seit dem noch nicht zurück gemeldet (ich hoffe mal es geht im Gut !).>
Hab ich gar nicht gewusst, wünsch im aber mal gute Besserung.

Ich verwende für die Spritehandles Bereichsvariablen (geht genauso gut mit Arrays), das ist nicht mein Problem. Will die Sprites gemeinsam auf dem Bildschirm bringen, vielleicht auch mit Semitrans oder anderen Einblendmöglichkeiten.
Gruß Thomas


Frank Abbing
Datum:11.09.02 20:47 Antwortenals Email verschicken  


Hallo,

bin wieder zusammengeflickt und gutgelaunt ;-))))

Thomas, bau doch einfach die Sprites außerhalb des Bildschirms auf (z.B. horizontale Position minus 2000) und positioniere nachher alle Sprites wieder um 2000 Pixel nach rechts. Das geht gut in einer Schleife mit:

...
x&=GetSpriteX(handle&)+2000
y&=GetSpriteY(handle&)
SetSpritePos(handle&,x&,y&,x&,y&)
...

Diese Methode ist sogar schneller, als alle Sprites sofort auf den Bildschirm zu setzten, weil Sprites, die momentan nicht sichtbar sind, gar nicht gezeichnet werden...

Dank' euch für die Genesungs-Wünsche !!!

Gruß,
Frank (nicht totzukriegen)


Thomas Ungerböck
Datum:12.09.02 00:58 Antwortenals Email verschicken (Kerzenlicht@chello.at) 


Hallo Frank
Freut mich daß du nicht totzukriegen bist.
Das mit den Sprites auserhalb des Bildschirms aufbauen klingt gut, muß ich dann gleich ausprobieren.
Mit einblenden von Sprites wirds wohl nicht so einfach gehen.
Gruß Thomas



Frank Abbing
Datum:12.09.02 14:24 Antwortenals Email verschicken  


Hallo,

nein, nicht ganz so einfach, möglich ist es aber.
Du mußt direkt die Spritegrafiken mit grafischen Effekten versehen.
Vielleicht komm' ich ja jetzt irgendwann mal dazu, zu diesem Thema einen Beispielsource zu schreiben...

Gruß, Frank


Thomas Ungerböck
Datum:15.09.02 14:08 Antwortenals Email verschicken (Kerzenlicht@chello.at) 


Hallo Frank
Habs ausprobiert mit den Sprites auserhalb des Bildschirm aufzubauen.
Unter normalen Umständen werden die Sprites dadurch schneller angezeigt (Abstand ist zwischen den Sprites ist geringer) aber die Cpu Auslastung steigt enorm da noch alle Sprite aktiv sind (Setspritefixmode verlangsamt ja wieder das Ganze)
Hab dann beim Testen noch ein Programm laufen gehabt das ganz schön die Cpu im Anspruch nimmt. Dann hats ca. 20 Sekunden gebraucht bis die Sprites am Bildschirm waren. Habs dann wieder wie gehabt probiert, und da war keine Verlangsamung zu erkennen.
Die Erkenntniss kam bei der Prf Datei. Als Exe haben beide ohne Verzögerung funktioniert.
Gruß Thomas


Frank Abbing
Datum:15.09.02 14:58 Antwortenals Email verschicken  


Hallo Thomas,

ok.
Was macht dein Prf-Code denn in dieser Zeit? In einer Warteschleife verharren? Wenn ja, bau mal ein Sleep 5 mit in die Warteschleife ein, dann wird die CPU Belastung deutlich geringer.
Für das Clipping der Sprites ist nur Windows zuständig. ProSpeed kopiert ein Sprite auch, wenn es am Bildschirm nicht sichtbar ist, aber Windows akzeptiert den Kopierbefehl nur dann, wenn das Sprite auch sichtbar ist.

Gruß, Frank


Thomas Ungerböck
Datum:15.09.02 16:04 Antwortenals Email verschicken (Kerzenlicht@chello.at) 


Hallo Frank

Hier nochmal zur Erklärung:

Methode1:
   Schleifeanfang
InitSprite (.....)
Spritetohdc
SetSpriteFixMode(...1)
   SchleifeEnde

Der Bildschirmaufbau geht eigentlich recht zügig (als Prf 1/2 sekunde bis 1 Sekunde und als Exe etwas weniger.

Methode2:
   Schleifeanfang
InitSprite (.....) auserhalb des Bildschirm
   SchleifeEnde

   Schleifenanfang
SetSpritePos       auf richtige Position
   SchleifenEnde

   Schleifenanfang   
Spritetohdc
SetSpriteFixMode(...1)
   Schleifendende

Bedingt durch die 2. Schleife (bei der 1. bin ich mir nicht sicher) steigt die Cpu Auslastung gewaltig. Läuft ein Programm in Hintergrund das die Cpu stark belastet (bei mir wars NetAnts, ist ein DownloadManager) hat sich der Aufbau vom ersten Sprite bis zum letzten gute 20 Sekunden gebraucht (das war bei der Prf Datei, mit der Exe weniger als 1/2 Sekunde)
Ich hab eigentich einen schnellen Pc. Soll mit einem langsameren Pc auch zurechtkommen.
Wenn ich hier die 3 Schleife weglassen würd und Sprittohdc und SetSpriteFixMode in die 2 Schleife einbauen würd, hab ich eigentlich nicht viel Zeitgewinn beim Aufbau der Sprites.

Mein Programm verharrt nicht irgendwo in einer Warteschleife.
Wenn der Spriteaufbau geschafft ist in Metode 2, ist die Cpu Auslastung eh wieder normal (bedingt durch setspritefixmode 1)

Ich wollt halt doch den Bildschirmaufbau beschleunigen. Ich glaub ich werd lieber bei Methode 1 bleiben
Gruß Thomas


Frank Abbing
Datum: 15.09.02 20:14 Antwortenals Email verschicken  


Hi,

na klar, SpriteToHDC() ist verantwortlich...

Gruß, Frank


 Zurück zur Übersicht
 

 Ein kostenloses WebMart Forum
WebMart Homepage Tools kostenlos
Shortwin - denn Glück ist kein Zufall!