Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 01.09.2002, 09:08 Titel: Blt Funktion - aber wie??? |
|
|
So jetzt seid ihr alle in die Falle gelaufen
Jetzt müsst ihr euch meine Frage durchlesen...die wie folgt lautet:
Wie erstelle ich meine eigene Blt Funktion???
Meine Gründe:
Ich will nicht, dass Blt Lock und Unlock aufruft...
..da das viel Zeit kostet ich möchte in einem Frame inmal die Primary Surface sperren alle Blits ausführen und dann wieder entriegeln...
Ich will also nur die Lock & Unlock Funktion aus der Blt und der BltFast raushauen...
Weiß einer, wie das geht???
Cu TheMillenium _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Sören JLI Master Trainee
Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 01.09.2002, 09:17 Titel: |
|
|
Hi!
Ich wüsste zwar nicht wie das gehen sollte, gaz ohne Lock und Unlock, aber du könntest die PrimarySurface nur einmal sperren, die ja sonst mit jeden aufruf von Blt() gesperrt und geöffnet wird!
Dazu würde ich eine Funktion schreiben, die zB alle Sprite Objekte übergeben bekommt(in einem Array oÄ) und diese dann mit nur einem aufruf von Lock/Unlock auf die Primary blittet! |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 01.09.2002, 14:52 Titel: |
|
|
@MiracleBoy:
so wie ich das verstanden habe will er das doch so machen mit dem einmal sperren(von der primären oberfläche).
@TheMillenium:
Die andern (offscreen)oberflächen musst du denke ich mall trozdem sperren. Ich weiß allerdings nicht was da beim blitten fürn problem sein soll. Du durchläufst das einfach alles mit einer schleife für jeden pixel. |
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 01.09.2002, 14:57 Titel: Achso |
|
|
Achso...
War ich dumm...an sowas einfaches denke ich Mal wieder nicht...
Aber das müsste doch schon Performance geben...wenn man so 20 Objekte per Frame blittet...spart man schon Mal 19 Locks und Unlocks...also 38 unnötige Funktionsaufrufe...
Cu TheMillenium _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 01.09.2002, 14:59 Titel: |
|
|
jo, denke ich schon, habs aber noch nie ausprobiert. |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 01.09.2002, 15:20 Titel: |
|
|
hmm, ich weiß garnicht ob das schneller ist. Die surfaces liegen im v-ram. |
|
Nach oben |
|
|
Sören JLI Master Trainee
Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 01.09.2002, 15:23 Titel: |
|
|
Ich hab mal gelesen, dass das schneller gehen soll. Aber wieviel Speed dabei rauskommt und ob sich der Aufwand dafür überhaupt lohnt weiss ich auch nicht! |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 01.09.2002, 19:10 Titel: |
|
|
Selbstgeschriebene Blit-Funktionen sind in der Regel wesentlich langsamer, als die DD-Varianten, da du jeden Pixel einzeln in (ich nehme es mal an) 2 For-Schleifen ansprichst.
Die DD-Varianten werden garantiert den Ganzen Speicherbereich mit einem Funktionsaufruf verschieben, was dein einsparen von Lock/Unlock wieder wett macht.
Schau dir doch mal die Flags genauer an, die du den Blit-Funkttionen übergeben mußt, vielleicht gibt es dort eine Möglichkeit zu sagen, daß die Surfaces schon gelockt sind, also nicht mehr gelockt werden sollen...
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 02.09.2002, 06:55 Titel: ... |
|
|
Geht das dann mit memcpy ???
Zwischenfrage: Hibt das Board bei euch auch manchmal den Fehler, dass er die Seite nicht finden kannn???
Cu TheMillenium _________________ The source of all power is in its destiny... |
|
Nach oben |
|
|
DaN00b JLI'ler
Anmeldedatum: 10.08.2002 Beiträge: 159
Medaillen: Keine
|
Verfasst am: 02.09.2002, 09:37 Titel: |
|
|
zur zwischenfrage: das hier bisher noch net aber bei anderen phpbb (oder wie auch immer die heißen) ist mir das auch öfters passiert... _________________ Carpe Diem - Seize the day - Nütze den Tag! |
|
Nach oben |
|
|
AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 02.09.2002, 11:59 Titel: |
|
|
Ja, mit Memcpy kann man den Zugriff beschleunigen. Das geht meines erachtens aber nur Zeilenweise, denn es gibt ja den sogenannten Pitch, und auch das Zielsurface ist ja größer (oder gleich groß), als das Quellsurface.
Zur Zwischenfrage:
Ja, ich habe auch Probleme, aber wenn ich die Links Langsam drücke (also nicht Zack, zack hintereinander) ist das Problem minimal. Warscheinlich ist der Quellcode ein wenig zu groß für PHP, der Speicher zu knapp bemessen und die Aufbauzeiten zu langsam, so daß´der Browser denkt, da kommt nichts.
Das ganze muß Apacheseitig eingestellt werden, daß die Wartezeiten etwas länger sind, oder der Speicher etwas mehr ist. Aber daß kan nur der Webseitenspeicherplatzanbieter tun.
AFE-GmdG _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 03.09.2002, 14:39 Titel: |
|
|
Zitat: |
Selbstgeschriebene Blit-Funktionen sind in der Regel wesentlich langsamer[...]
|
Da muss ich dir wiedersprechen AFE...
Selbstgeschriebene Blit-Funktionen können um ein VIELFACHES schneller sein.
Ich bin Beta-Tester der Windows-Version des Spieles PC-Bakterien(TOM-Production... die haben u.A. die Game of ROBOT Spiele gemacht)... der Programmierer arbeitet mit selbstgeschriebenen Assembler Routinen, die bei 1024x768 auf einem Pentium mit 200MHz immer noch 200+ FPS zaubern... und die haben sogar noch 3 verschieden Blending Effekte(Licht, Schatten, Glas).
Noch zu empfehlen: Compilierte Bitmaps, wenn kein Clipping nötig ist. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 03.09.2002, 20:39 Titel: |
|
|
Hi,
ja lustig, kompilierte Sprites Lange her, dass ich sowas benutzt habe Trotzdem sollte meiner Meinung nach ein DX-Blit von Videospeicher in den Videospeicher (sichtbarer Bereich) schneller sein als ein Compiliertes Sprite oder Bitmap (wenn die Karte HW-Blt Unterstützung hat).
Aber vielleicht sollten wir einen Wettbewerb machen:
Die Aufgabe ist es ein Programm zu schreiben, dass ein Sprite, das vorher geladen werden muss schnellstmöglich auf den Bildschirm Blittet z.b. 100.000 mal. Wer das schnellste Programm schrebit gewinnt
Christian |
|
Nach oben |
|
|
|