Italia
Foro

Animierter Hintergrund-bräuchte ne schnelle DLL

 
Hallöchen.....
Ich habe mich mal versucht mit der ProSpeed.dll (Super DLL) an nem kleinem Jump & Run Spiel (stehe noch am Anfang) ..... Ich hänge noch am Speed der Animierte Hintergrunggrafik ... Schaffe mit meinem Amd 700 aber gerade mal 10 Frames pro Sek. . Kann mir vieleicht einer ne Dll schreiben, wo denn der von mir erstellte Profancode direkt in Maschiene geschrieben ist. Ich denke per erfarende in ein paar Minuten gemacht. Vieleicht ja sogar ne Idee um sie in die Prospeed aufzunehmen.....

Also Hier der Quellcode.
KompilierenMarkierenSeparieren
a&=&gettickcount
__________Start_______________
X%=0 Hier soll die X-Pos des Spielfeldes stehen
y%=0 Hier soll die Y-Pos des Spielfeldes stehen
Variablen für unterschiedliche Hintergrundanimation
a0%=0
a1%=x%/32
a2%=x%/16
a3%=x%/8
a4%=x%/4
a5%=x%/2
a6%=x%
------- Hier müßte ein befehl stehen um die Variablen a0%-a6% zu übernehmen oder aber nur x% und der Rest wird vor Ort berechnet
HintergrundAnimationsBmp(HHg1&) in den ShadowSpeicher(HHg0&) Kopieren
CopyExtBmp (HHg0&,0,0 ,640,40, HHg1&,a5%,0 ,0)1
CopyExtBmp (HHg0&,0,40 ,640,32, HHg1&,a2%,40 ,0)2
CopyExtBmp (HHg0&,0,72 ,640,16, HHg1&,a3%,72 ,0)3
CopyExtBmp (HHg0&,0,88 ,640,8 , HHg1&,a0%,88 ,0)4
CopyExtBmp (HHg0&,0,96 ,640,72, HHg1&,a1%,96 ,0)5
CopyExtBmp (HHg0&,0,168,640,48, HHg1&,a2%,168,0)6
CopyExtBmp (HHg0&,0,216,640,48, HHg1&,a3%,216,0)7
CopyExtBmp (HHg0&,0,264,640,24, HHg1&,a4%,264,0)8
CopyExtBmp (HHg0&,0,288,640,48, HHg1&,a5%,288,0)9
CopyExtBmp (HHg0&,0,336,640,48, HHg1&,a6%,336,0)10
.... und die SpielfeldBitmap(HHg2&) drüberlegen
CopyExtBmp (HHg0&,0,0 ,640,384,HHg2&,x%,y%,-1)SpielfeldBitmap
nun den sichtbaren Bildschirm verschieben
InitSpriteBackground(1,888888,888888,x%,y%,888888,888888)
.... und den im Shadow erzeugten Bildschirm in die HintergrundKopien(HHgC1&,HHgC2&) übergeben
CopyExtBmp (HHgC1&,x%,y%,640,384,HHg0&,0,0,0)
CopyExtBmp (HHgC2&,x%,y%,640,384,HHg0&,0,0,0)
------- Hier müßte ein befehl stehen um die Variablen x%,y% zu übernehmen und um den gesammten Kopiervorgang zu starten
Frames pro Sekunde berechnen und ausgeben
fps%=1000/(&gettickcount-a&)
a&=&gettickcount
Drawtext 0,400," "
Drawtext 0,400,fps%
Bild um 4 schritte rüberschieben
x%=x%+4
________________ Ende____________

Falls jemand den gesammten Quellcode mit den Bitmaps haben will um sich somit einen besseren Überblick verschaffen zu können der soll mir Mailen.

PS:Nen bischen aber nur nen bischen kenne ich mich in C++ aus.
Wenn mir Jemand sagen potuto wie ich die Adresse der Einzelnen Bitmaps ermitteln kann wenn Io l' Handel der Bmp habe.
Vieleicht kann ich mir dann ja auch selber helfen

Also danke im vorraus.
Cu Andy
 
19.04.2004  
 



Hallo Andreas,

Ich hänge noch am Speed der Animierte Hintergrunggrafik ... Schaffe mit meinem Amd 700 aber gerade mal 10 Frames pro Sek.

Gerade eine grande Hintergrunds-Grafik beansprucht viel Systemzeit, wenn sie animiert oder gescrollt wird. Das sind halt grande Datenmengen, die dann verändert werden müssen.

Kann mir vieleicht einer ne Dll schreiben, wo denn der von mir erstellte Profancode direkt in Maschiene geschrieben ist. Ich denke per erfarende in ein paar Minuten gemacht. Vieleicht ja sogar ne Idee um sie in die Prospeed aufzunehmen.....

Das wird dir kaum Geschwindigkeits-Vorteile bringen! So langsam ist Profan nicht, das die paar Befehlszeilen in Assembler wesentlich schneller wären.
In ein paar Minuten ist das auch nicht gemacht, du mußt erst LIB und INC File zur DLL erstellen, eine DLL Struktur usw... und bringen wird es kaum was.
Eine schnellere Methode wäre es, den Hintergrund als Sprite darzustellen, dann kannst du den Sprite-Hintergrund ja automatisch animieren lassen (mit den InitSprite Parametern)
Dann ist alles in Maschinensprache und eine schnellere Möglichkeit gibt es nicht per GDI.
Schneller gehts nur noch mit DirectX, aber die Nachteile sind dann naturalmente, das du keine Buttos, Menüs, usw benutzen kannst, weil DirectX nicht mit normalen Fenstern arbeitet.

PS:Nen bischen aber nur nen bischen kenne ich mich in C++ aus.
Wenn mir Jemand sagen potuto wie ich die Adresse der Einzelnen Bitmaps ermitteln kann wenn Io l' Handel der Bmp habe.
Vieleicht kann ich mir dann ja auch selber helfen

Jedes Bmp hat nur eine Bitmap!
Dummerweise gibt GDI die Bitmapadressen nicht sehr gerne her, das ist eine ziemlich aufwendige Programmazione. Wenn die Adressen der Bitmaps frei disponibile wären, wäre vieles einfacher und schneller.
Um die Adresse überhaupt erfahren zu können, mußt du unbedingt mit geräteunabhängigen Bitmaps arbeiten.
Wie das genau geht, mußt du in der API Aiuto nachsehen, da gibts auch schon einige Beispiele in C++.

Dann gibts da noch eine alte Windows 3.x Funktion, die DirectX auch benutzt. Aber Infos hierrüber sind kaum zu bekommen, Microsoft will das wohl nicht...

Hoffe, das hilft dir etwas weiter.

Saluto, Frank
 
19.04.2004  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

1.568 Views

Untitledvor 0 min.
Sven Bader15.10.2021
Andreas Koch10.01.2013

Themeninformationen

Dieses Thema hat 1 subscriber:

unbekannt (2x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie