DisplayTranslucideSprite + StartSpecialFX()

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Delle
Beiträge: 1132
Registriert: 10.05.2005 22:48

DisplayTranslucideSprite + StartSpecialFX()

Beitrag 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

Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag 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.
Benutzeravatar
Delle
Beiträge: 1132
Registriert: 10.05.2005 22:48

Beitrag 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...
Benutzeravatar
SDX
Beiträge: 95
Registriert: 14.01.2005 18:37
Wohnort: Bremen
Kontaktdaten:

Beitrag 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!
.oO SDX Oo.
Benutzeravatar
Delle
Beiträge: 1132
Registriert: 10.05.2005 22:48

Beitrag 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...
Benutzeravatar
Delle
Beiträge: 1132
Registriert: 10.05.2005 22:48

Beitrag von Delle »

*push*

Hat das noch nie jemand genutzt?
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag 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.
Benutzeravatar
Delle
Beiträge: 1132
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Wiegesagt 3D geht nicht bei mir ;)
Benutzeravatar
SDX
Beiträge: 95
Registriert: 14.01.2005 18:37
Wohnort: Bremen
Kontaktdaten:

Beitrag von SDX »

@Delle: Nur mal so zur Info für uns... was für eine Grafikkarte hast Du?
.oO SDX Oo.
Benutzeravatar
SDX
Beiträge: 95
Registriert: 14.01.2005 18:37
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
.oO SDX Oo.
Antworten