Seite 1 von 2

DisplayTranslucideSprite + StartSpecialFX()

Verfasst: 19.05.2005 07:52
von Delle
Bei der Nutzung von DisplayTranslucideSprite() wird das System
sichtbar ausgebremst, angeblich soll es mit StartSpecialFX()
wesentlich schneller gehen...
Wenn Sie ClearScreen() verwenden, platzieren Sie diesen Befehl innerhalb des StartSpecialFX() : ... : StopSpecialFX() Programmblocks.
Irgendwie sinnig wenn ich erst den Screen dort löschen soll,
wenn doch meine DisplayTranslucideSprites ganz oben auf
dem Screen sein sollen...

Der jetzige Code sieht etwa so aus:

Code: Alles auswählen

Repeat

     ExamineKeyboard():ExamineMouse():ClearScreen(0,0,0)

     StartSpecialFX()
     Gosub Bewegen
     StopSpecialFX()

     FlipBuffers()

Until KeyboardReleased(#PB_Key_Escape)

Bewegen:

ForEach Feinde()
     DisplayTranslucideSprite(#Sprite_Feinde,Feinde()\x,Feinde()\Feindey,100)
Next

Return


Verfasst: 19.05.2005 14:09
von Ynnus
Nimm statt Translucide die Sprite3D Lib. Die ist wesentlich flotter als dieses Zeug und die angeblichen SpecialFX Dingens sind auch nicht so das Wahre. Wenn dein Programm nicht unbedingt portabel auf Linux und Co. sein muss, nimm die 3D Sprite Library.

Verfasst: 19.05.2005 14:30
von Delle
Die "Sprite3D Lib" funzt bei mir leider nicht, muss wohl an der Grafikkarten liegen.

Es geht mir weniger um die Geschwindigkeit von DisplayTranslucideSprite() sondern eher darum das es nicht richtig funzt...

Verfasst: 19.05.2005 18:17
von SDX
Musst Du denn den Screen via ClearScreen() löschen? Bei meiner aktuellen Tile-Engine zum Beispiel ist dieses gar nicht mehr nötig, da eh der ganze Screen übermalt wird. Man glaubt es nicht, aber ClearScreen() schluckt verhältnismäßig viel Rechenzeit!

Verfasst: 19.05.2005 18:36
von Delle
Ja ich muss (leider) löschen, aber an dem Befehl liegt es nicht.

Mich würde nur mal interessieren wie ich nun mein Programm
aufbauen soll, wenn ClearScreen() nur innerhalb von StartSpecialFX()
und StopSpecialFX() plaziert werden darf...

Verfasst: 21.05.2005 14:34
von Delle
*push*

Hat das noch nie jemand genutzt?

Verfasst: 21.05.2005 16:19
von Ynnus
Delle hat geschrieben:*push*

Hat das noch nie jemand genutzt?
Wohl eher nicht, wie ich sagte, nutzt man stattdessen besser die 3D Sprite Library, da diese DirectX 7 verwendet und wesentlich flotter ist, da Hardware beschleunigt. Ich hab selbst mal dieses traslucide versucht, aber bin an der seltsamen Handhabung und der Umständlichkeit gescheitert. Stattdessen verwende ich 3D Sprites was wesentlich bessere Ergebnisse erzielt.

Verfasst: 21.05.2005 16:33
von Delle
Wiegesagt 3D geht nicht bei mir ;)

Verfasst: 21.05.2005 18:17
von SDX
@Delle: Nur mal so zur Info für uns... was für eine Grafikkarte hast Du?

Verfasst: 21.05.2005 18:57
von SDX
So... folgendes:
Ich mal mal einbißchen rumgeguckt und getestet und so... Ich würde diese SpecialFX-Sache persönlich einfach weglassen :mrgreen: Bei einem StartSpecialFX() wird ein "Screen" im Hauptspeicher (NICHT auf der Grafikkarte) erstellt und darauf alles gezeichnet bis StopSpecialFX() aufgerufen wird. In diesen Augenblick wird dieser "Screen" KOMPLETT in den Speicher der Grafikkarte geschrieben. Hat man das begriffen, kappiert man auch, warum das ClearScreen() innerhalb Start- und StopSpecialFX() stehen muss, da man den "Screen" im Hauptspeicher löschen muss, ... der GrafikkartenScreen wird ja bei StopSpecialFX() wieder komplett überzeichnet und muss garnicht gelöscht werden, was man aber machen würde, wenn man halt VOR dem StartSpecialFX() ClearScreen() aufrufen würde.
... ja ...
... genau ...
... ist eigentlich Müll ... viel zu langsam
... grade bei größeren Auflösungen nicht wirkich zu gebrauchen.

Delle, leg ein paar Euros an und kauf dir zumindest ne Radeon 9100 oder Ähnliches. Die genügt vollends für Sprite3D.