ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > AGA<->CyberGraphX: Buffer | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
1 -2- | [ - Beitrag schreiben - ] |
20.02.2007, 22:12 Uhr Holger Posts: 8116 Nutzer |
@Ralf27: Also bei mir scheint Dein Code auch mit den Fehlern das Richtige zu tun, aber das mag ja an den Unterschieden zwischen CGX und P96 liegen. Probier's doch mal so: code:REM $nowindow REM $noerrors REM $nolines REM $nojumps REM $library REM $nodebug REM $nobreak REM $noevent REM $nooverflow REM $novarchecks REM $noautodim REM $noaddicon REM $noarray REM $nostack REM $INCLUDE Asl.bh REM $INCLUDE Exec.bh REM $INCLUDE Graphics.bh REM $INCLUDE Intuition.bh LIBRARY OPEN "exec.library", 33 LIBRARY OPEN "intuition.library", 39 LIBRARY OPEN "graphics.library", 39 LIBRARY OPEN "asl.library", 38 DEFINT a-z CONST sBreite=640 CONST sHoehe=512 tagsl&=AllocVec&(100,MEMF_PUBLIC&) IF tagsl&=0 THEN Ende TAGLIST tagsl&,_ ASLSM_TitleText&,"Benötigt:"+STR$(sBreite)+"*"+STR$(SHoehe),_ ASLSM_Window&,win&,_ ASLSM_MinWidth&, sBreite, ASLSM_MinHeight, SHoehe,_ ASLSM_InitialDisplayID&,DisplayID&,_ TAG_END& fr&=AllocAslRequest&(ASL_ScreenModeRequest&,tagsl&) IF fr& THEN IF AslRequest&(fr&,0) THEN DisplayID&=PEEKL(fr&) FreeASlRequest fr& END IF IF DisplayID&=0 THEN Ende TAGLIST tagsl&,_ SA_Width&, sBreite, _ SA_Height&, sHoehe, _ SA_DisplayID&, DisplayID&, _ TAG_END& eigenerscr&=OpenScreenTagList&(0,tagsl&) IF eigenerscr&=0 THEN Ende TAGLIST tagsl&, _ WA_IDCMP&,IDCMP_VANILLAKEY&, _ WA_Flags&,WFLG_BORDERLESS&+ _ WFLG_ACTIVATE&,_ WA_CustomScreen&,eigenerscr&,_ TAG_END& win&=OpenWindowTagList&(0,tagsl&) IF win&=0 THEN Ende winrp&=PEEKL(win&+RPort) scrbm&=PEEKL(winrp&+RastPortBitMap%) sTiefe=GetBitMapAttr(scrbm&, BMA_DEPTH&) userport&=PEEKL(win&+UserPort) BufferBitmap&=AllocBitMap&(sBreite,sHoehe,sTiefe,BMF_MINPLANES&,scrbm&) IF BufferBitmap& THEN Bufferrp&=AllocVec&(RastPort_sizeof,MEMF_PUBLIC&) IF Bufferrp& THEN InitRastPort Bufferrp& POKEL Bufferrp&+RastPortBitMap%,BufferBitmap& ELSE GOTO Ende END IF ELSE GOTO Ende END IF rp&=Bufferrp& Pi!=4!*ATN(1!) i=0 a$="" t2#=TIMER WHILE Ende=0 m&=GetMsg&(Userport&) IF m& THEN w&=PEEKL(m&+Class) w2&=PEEKW(m&+IntuiMessageCode) ReplyMsg m& IF w&=IDCMP_VANILLAKEY& THEN Ende=1 END IF INCR i:IF i>32766 THEN i=0 SetRast rp&,0 x=184:y=385:z=47:Al!=3!+i*45!/z ZeichneZahnrad x,y,4.9,z,Al!,1.25,1!,20! BerechneNeulage 32,100.9453,4.9,z,x,y,Al! ZeichneZahnrad x,y,4.9,z,Al!,1.25,1!,20! BerechneNeulage 23,99.41803,4.9,z,x,y,Al! ZeichneZahnrad x,y,4.9,z,Al!,1.25,1!,20! BerechneNeulage 26,356!,4.9,z,x,y,Al! ZeichneZahnrad x,y,4.9,z,Al!,1.25,1!,20! BerechneNeulage 38,304!,4.9,z,x,y,Al! x1=x:y1=y:Al1!=Al!:z1=z ZeichneZahnrad x,y,4.9,z,Al!,1.25,1!,20! BerechneNeulage 17,278.0417,4.9,z,x,y,Al! ZeichneZahnrad x,y,4.9,z,Al!,1.25,1!,20! BerechneNeulage 24,281.101,4.9,z,x,y,Al! ZeichneZahnrad x,y,4.9,z,Al!,1.25,1!,20! BerechneNeulage 27,3.372287,4.9,z,x,y,Al! ZeichneZahnrad x,y,4.9,z,Al!,1.25,1!,20! BerechneNeulage 21,105!,4.9,z,x,y,Al! ZeichneZahnrad x,y,4.9,z,Al!,1.25,1!,20! x=x1:y=y1:Al!=Al1!:z=z1 BerechneNeulage 25,8!,4.9,z,x,y,Al! ZeichneZahnrad x,y,4.9,z,Al!,1.25,1!,20! BerechneNeulage 22,77.05708,4.9,z,x,y,Al! ZeichneZahnrad x,y,4.9,z,Al!,1.25,1!,20! BerechneNeulage 20,177.2706,4.9,z,x,y,Al! ZeichneZahnrad x,y,4.9,z,Al!,1.25,1!,20! t#=TIMER incr frames IF t#-t2#>0.3 THEN a$=STR$(INT(frames/(t#-t2#)))+" fps" frames=0 t2#=t# END IF move rp&,10,10 text rp&,SADD(a$),LEN(a$) junk=BltBitMapRastPort(BufferBitmap&,0,0,winrp&,0,0,sBreite,sHoehe,&Hc0) WEND Ende: IF win& THEN CloseWindow win& IF eigenerscr& THEN junk&=CloseScreen&(eigenerscr&) IF bufferrp& THEN FreeVec bufferrp& IF bufferbitmap& THEN FreeBitmap bufferbitmap& IF tagsl& THEN FreeVec tagsl& END REM Rest unverändert... mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
20.02.2007, 22:30 Uhr Ralf27 Posts: 2779 Nutzer |
Die Veränderungen beim Timer bringen mir ja nur die FPS, also in meinem Fall 8fps. Ich hab auch die Flags bei AllocBitmap() geändert, auch keine Veränderung. Ich hab jetzt die Farbtiefe über ASL gelöst, bzw. öffne ich jetzt denn Screen und den Buffer mit der gleichen Farbtiefe, die ich über ASL zurück bekomme. Es ist übrigens egal wie hoch die Auflösung ist, der Speed bleibt gleich!. Ob ich jetzt ein Screen mit 320*200*8 oder z.b. 1024*768*24 aufmach, die Geschwindigkeit ist die gleiche. Ok, die Zeichenfläche ist ja auch mit 640*512 die gleiche, aber die Farbtiefe unterschiedlich. Und, ich hab auch mal den Buffer ausgeschaltet und direkt mit Move() und Draw() in den Screen geschrieben. Dann wird etwas zwar etwas schneller, aber das wars auch schon. An AGA komme ich so gerade so dran, aber nicht ganz... Hm, wie schnell wäre das ganze unter C... EDIT: Bei ASL hab ich noch ASLSM_DoDepth angegeben, damit ich auch die Farbtiefe verändern kann um halt so sehn was passiert. Da ist es egal ob 256 oder 2... hm, wo issen da nur der Wurm drin... -- http://www.alternativercomputerclub.de.vu [ Dieser Beitrag wurde von Ralf27 am 20.02.2007 um 22:38 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
20.02.2007, 22:39 Uhr Holger Posts: 8116 Nutzer |
Zitat:Mein Code hat ein paar mehr Veränderungen als nur den Timer... Und irgendwie müsstest Du doch mindestens zwei fps-Zahlen ermitteln, einmal für AGA und einmal für RTG, oder? Besser noch mit verschiedenen Screentiefen, 8, 16, 32 ... Zitat:Guck mal, mein Beispiel gibt beim Screen öffnen gar keine Tiefe an und verwendet die Tiefe vom Screen bei der Buffer-BitMap... Zitat:Tja, bei mir macht's einen Unterschied, aber nicht so viel wie der Unterschied zwischen AGA und RTG. Zitat:Bestimmt schneller, aber das war bislang gar nicht die Frage... Du kannst mit Sicherheit auch den Basic-Code noch optimieren. mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
20.02.2007, 22:46 Uhr Ralf27 Posts: 2779 Nutzer |
Zitat:So ist der Speed gleich, bei beidem 8fps. Also AGA und RTG. Wobei RTG etwas langsamer ist, was ich ja bei der Rundung jetzt nicht mehr seh. Es ist bei RTG egal was für eine Farbtiefe ich habe (8,15,16,24). Die extremen Auflösungen (1600*1200*24) mal ungetestet. Zitat:Ja, das hab ich gesehn. Ich hab auch schon die Tiefen direkt angegeben, z.b. 8 bit bei beidem. Das Ergebniss ist leider das gleiche. Zitat:Bestimmt schneller, aber das war bislang gar nicht die Frage... Du kannst mit Sicherheit auch den Basic-Code noch optimieren. [/quote] Ja, da gibt es noch Möglichkeiten die ich auch noch ergreifen möchte. Nur eben das die Grafikausgabe auf der Grafikkarte etwas langsamer ist als mit AGA macht mich eben etwas stutzig. Wie schon geschrieben ist es nicht viel, aber dennoch. Eigentlich sollte es doch schneller laufen (ok, ist wieder nur eine Vermutung von mir ) -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
20.02.2007, 23:14 Uhr NoImag Posts: 1050 Nutzer |
Zitat: Einiges ist bereits ab 2.0 nicht mehr erlaubt. Dies findest Du in den RKRMs. Alle Änderungen für 3.x findest Du im NDUK 3.1. Eine komplette Zusammenstellung befindet sich auf der Amiga Developer CD-ROM. Natürlich ist alles auf englisch. Die Mühe alles zu Übersetzen hat sich irgendwann niemand mehr gemacht. Tschüß [ - Antworten - Zitieren - Direktlink - ] |
21.02.2007, 11:27 Uhr Der_Wanderer Posts: 1229 Nutzer |
Mess doch mal wieviel Zeit du bei den Zeichenoperationen verbrauchst, und wieviel beim Blitten. Die Graka sollte um Welten schneller sein als AGA. Oder nehm mal den Code zum zeichnen raus, und messe nur das Double Buffering. Eine Graka sollte da mindestens auf 100FPS oder mehr kommen. Ich würde auch, so wie ich weiter oben gepostet habe, einen Layer anlegen, damit du nicht ins Nirvana malst. Evtl. bringt das einen Slow-Down. Auch das DISPALYABLE Flag würde ich gesetzt lassen. -- Thilo Köhler, Author von: HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
22.02.2007, 20:31 Uhr Ralf27 Posts: 2779 Nutzer |
So, ich hab jetzt mal ein paar Tests gemacht: Das reine Berechnen ohne Ausgabe dauert pro Bild 0,0218 Sekunden, also ca. 45 Frames kann ich pro Sekunde berechnen ohne eine Ausgabe zu machen (also auch nichts in denn Puffer schreiben sondern nur die koordinaten für Move() und Draw() berechnen). Die reine Bufferzeiten ohne Zeichen, aber mit(!) SetRast() bringen mich auf einer Grafikkarte auf 128fps, auf AGA auf 43. Also ohne(!) etwas zu zeichnen, sondern nur Buffer bei jedem Frame mit SetRast() säubern und dann mit BltBitMapRastPort swappen. Ohne SetRast() komme ich bei AGA auf 66 und die Zeit auf der Grafikkarte bleibt bei 128fps. Also, es liegt wohl am zeichnen... -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
22.02.2007, 20:46 Uhr Der_Wanderer Posts: 1229 Nutzer |
Also die Grafikkarte sollte beim Zeichnen viel schneller als AGA sein. Das siehtst du schon daran, dass SetRast kaum was ausmacht auf der Graka. Teste doch mal, wie lange Draw braucht bei dir. Zeichne einfach 100000 Linien und gebe die Zeit aus. Oder messe das mit SysSpeed. -- Thilo Köhler, Author von: HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, TKUnpacker Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
22.02.2007, 21:12 Uhr Ralf27 Posts: 2779 Nutzer |
Ok, für 100.000 Linien mit MB: AGA=4,656 Sec RTG=1,226 Sec Hm, also müßte doch auf RTG schneller laufen! Was ist das dann?!? -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
22.02.2007, 22:54 Uhr Ralf27 Posts: 2779 Nutzer |
Hm, ist es möglich das mir da gar MaxonBasic irgendwie ein Strich durch die Rechnung macht? Wäre das möglich? -- http://www.alternativercomputerclub.de.vu [ - Antworten - Zitieren - Direktlink - ] |
23.02.2007, 10:50 Uhr whose Posts: 2156 Nutzer |
@Ralf27: Rein prinzipiell ist das vorstellbar. Im Moment habe ich aber keine Ahnung, wo genau Dir MB Schwierigkeiten machen könnte. Zumindest wissen wir jetzt, daß es nicht nur am Format der Offscreen-Bitmap liegt. Da wirst Du u.U. noch ein wenig experimentieren müssen, um die Ursache einzukreisen. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 [ - Antworten - Zitieren - Direktlink - ] |
1 -2- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > AGA<->CyberGraphX: Buffer | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |