Forum | | | | | 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 für erfarende in ein paar Minuten gemacht. Vieleicht ja sogar ne Idee um sie in die Prospeed aufzunehmen.....
Also Hier der Quellcode. KompilierenMarkierenSeparierena&=&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 könnte wie ich die Adresse der Einzelnen Bitmaps ermitteln kann wenn ich den Handel der Bmp habe. Vieleicht kann ich mir dann ja auch selber helfen
Also danke im vorraus. Cu Andy |
| | | | |
| | | 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 große Hintergrunds-Grafik beansprucht viel Systemzeit, wenn sie animiert oder gescrollt wird. Das sind halt große 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 für 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 Dateien 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 natürlich, 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 könnte wie ich die Adresse der Einzelnen Bitmaps ermitteln kann wenn ich den 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 Programmierung. Wenn die Adressen der Bitmaps frei verfügbar 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 Hilfe 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.
Gruß, Frank |
| | | | |
|
AntwortenThemenoptionen | 1.567 Betrachtungen |
ThemeninformationenDieses Thema hat 1 Teilnehmer: |