ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Grafikfehler unter UAE | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
01.02.2006, 08:09 Uhr Micha1701 Posts: 938 Nutzer |
Hi! Ich hab vor kurzem mein neues Spiel SUDOKU online gestellt. Nun ist es bei vielen zu gelegentlichen Grafikfehlern gekommen. Innerhalb des Spieles wird zwischen P96 und CGX Systemen unterschieden. Unter CGX werden Screenbuffer besorgt und diese dann einfach gewechselt und unter P96 besorg ich mir ne BitMap und wechsel die dann mit ChangeVPBitMap(). Auf "echten" Amigas funktioniert das auch wunderbar. Hab das früher auf meinem 1200er mit BVision und CGX getestet und jetzt auf nem A1 mit P96. Alles keine Probleme. Unter WinUAE gibts da aber ein Problem:
Es sieht so aus, als ob WinUAE den Bereich unter der Maus mitkopiert und dann bei einer Mausbewegung wieder auf den Bildschirm pappt... Hat jemand schonmal so ein Problem gesehen und weiß wie man das beheben kann? -- Micha Look at my HPs: http://www.Silicon-Wizards.com http://www.RealmsofPower.de.vu [ - Antworten - Zitieren - Direktlink - ] |
01.02.2006, 09:47 Uhr thomas Posts: 7718 Nutzer |
Zitat: Hast du zwei nicht-angezeigte BitMaps ? Sonst ist mit dem Erstellen des Menüs die Sicherung kaputt. Zitat: Bist du sicher, daß du nicht eher Zeugs aus der sichtbaren Bitmap bekommst, aus der Zeit, als du die Maus zuletzt bewegt hast ? Welche Version von WinUAE und von Picasso96 benutzt du ? Mouse-Trails waren lange Zeit ein Problem bei WinUAE. Vielleicht ist der Workaround dafür nicht ganz kompatibel. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
01.02.2006, 10:12 Uhr Micha1701 Posts: 938 Nutzer |
Auf diese Überschneidungen achte ich natürlich. In diesem Fall kopiere ich nur 300 Zeilen aus der Mitte des Bildes in die oberen 300 Zeilen der anderen BitMap. Gezeichnet wird dann im unteren Bereich. Da gibts also keine Überschneidungen... Das mit den Maustrails müsste es sein. Es bleibt der Teil an der Stelle übrig an dem die Maus zu letzt gewesen ist. Benutze derzeit WinUAE V1.1.1, rtg.library V40.3993 und picasso96API.library V2.3 Gibts da was neueres? -- Micha Look at my HPs: http://www.Silicon-Wizards.com http://www.RealmsofPower.de.vu [ - Antworten - Zitieren - Direktlink - ] |
01.02.2006, 10:21 Uhr MaikG Posts: 5172 Nutzer |
Unter WinUAE 0.8.x - 0.9.x hab ich selbst bei der Workbench 3.9(Menüs etc.) manchmal grafikfehler. Da ich es sehr selten benutze hab ichs es noch nicht aktualisiert. [ - Antworten - Zitieren - Direktlink - ] |
01.02.2006, 13:20 Uhr Holger Posts: 8116 Nutzer |
Zitat: Versteh ich nicht. Nach Deiner Beschreibung kopierst Du von a nach b und dann wieder von b nach a. Dann wäre der Inhalt identisch. Wie kannst Du also "Zeugs aus der nicht sichtbaren BitMap" sehen? Was mich noch viel mehr verwundert: Du blittest zwischen den BitMaps hin und her, schreibst aber Eingangs, daß Du ChangeVPBitMap() benutzt. Das haut doch irgendwie nicht hin... mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
01.02.2006, 14:52 Uhr Micha1701 Posts: 938 Nutzer |
OK, ich hab mich wohl etwas unklar ausgedrückt. Also an für sich bereite ich alles vor um doublebuffering zu verwenden. Z.B. wird das Titelbild im Hintergrund gezeichnet und dann nach vorne geholt (ChangeVPBitMap). Innerhalb des Spieles verwende ich die 2. BitMap nur zum rendern und kopiere dann die fertigen Teile in die sichtbare BitMap. Obwohl ich also nicht die BitMaps wechsle sondern nur in der einen BitMap zeichne und das dann in die andere reinkopiere gibts dennoch "Maustrails". Wenn man also die Maus bewegt, dann erscheint wieder ein Stück von der angezeigten BitMap so wie sie vor dem ClipBlit() ausgesehen hat... Besser erklärt? -- Micha Look at my HPs: http://www.Silicon-Wizards.com http://www.RealmsofPower.de.vu [ - Antworten - Zitieren - Direktlink - ] |
01.02.2006, 18:48 Uhr Holger Posts: 8116 Nutzer |
@Micha1701: Auch wenn die Fehler möglicherweise mit Bugs in WinUAE zusammenhängen, ist es nicht ratsam, Daten vom dargestellten Bildschirm in den Offscreen-Buffer zu übertragen. Dagegen sprechend die potentiellen Performance-Probleme (z.B. unter cgx gibt es m.W. keine Möglickeit, sicherzustellen, daß die BitMap im Gfxcard-Speicher statt im FastRAM liegt, FastRAM->Gfx ist schneller als Gfx->FastRAM), der Verlust der Option, nicht im Vollbildmodus zu operieren, und natürlich die Probleme mit dem Mauszeiger. Selbst wenn das Problem UAE-seitig gefixt wird, muß UAE mehrmals Mauszeiger, resp. alten Hintergrund wiederherstellen, damit Deine Anwendung korrekt läuft. Da Du aber alle Grafikdaten zur Verfügung hast, um den Bildschirminhalt zu rekonstruieren, ist es sinnvoller, genau dies im Backbuffer zu tun, statt die Daten aus dem live-Bildschirm zu kopieren. Dann kannst Du auch gleich richtiges Double-Buffering benutzen... mfg -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
01.02.2006, 19:01 Uhr bubblebobble Posts: 707 Nutzer |
Ich würde auf jeden Fall BlitBmapRastport verwenden. Ich glaube auch, dass es unter WinUAE gehen müsste, hatte damit nie Probleme. LEsen von Graka ist aber immer schlecht. Besser ist es, das Bild komplett im RAM zu komponieren und nur schreibend auf den Graka Speicher zuzugreifen. -- 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 - ] |
02.02.2006, 15:16 Uhr Micha1701 Posts: 938 Nutzer |
OK, ich hab das Problem jetzt umgangen, indem ich eben nicht von einem Buffer in den anderen schreibe sonder im Hintergrund ein neues Bild rendere und das dann nach vorne hole... -- Micha Look at my HPs: http://www.Silicon-Wizards.com http://www.RealmsofPower.de.vu [ - Antworten - Zitieren - Direktlink - ] |
02.02.2006, 15:37 Uhr whose Posts: 2156 Nutzer |
Zitat: Das ist eigentlich generell eine gute Vorgehensweise... unter WinUAE wirst Du allerdings die Mousetrails bei Doublebuffering dadurch trotzdem nicht ganz los, es sei denn, Du zeichnest in jedem Frame das Bild komplett neu. Ich weiß jetzt nicht genau, ob sich das beim Pseudo-Doublebuffering in einem Fenster auf der Workbench genauso verhält, da dort meist das gesamte Bild aus der Offscreen-Bitmap platt ins Fenster geblittet wird. Allerdings kann man dort ein Flackern des Mauszeigers beobachten, solange er im Zeichenbereich steht, daher dürften sich auch dort die Mousetrails oder Blitfehler bemerkbar machen, wenn nicht der komplette Fensterinhalt jedes Mal neu gezeichnet wird. Für das Doublebuffering in einem eigenen Screen kannst Du übrigens auch auf die ChangeScreenBuffer()-Methode zurückgreifen, sofern OS3.1 Voraussetzung sein soll. Das funktioniert auch unter WinUAE prima und scheint nebenbei die einzige Methode zu sein, die auf 99% aller Systeme rasterstrahlsynchron abläuft (ich muß allerdings gestehen, daß ich ChangeVPBitMap() bisher nicht benutzt habe, diese ist ja Teil des ChangeScreenBuffer()-Mechanismus, gut möglich, daß diese Funktion auch synchronisiert abläuft). Evtl. sollte man beim WinUAE-Team mal darüber grübeln, wie man sicherstellen kann, daß das Zeichnen des Mauszeigers garantiert als letzte Operation bei der Frameerstellung ausgeführt wird, dann wäre man das Problem der Mousetrails und Blitfehler los. Grüße -- --- µA1 PPC 750GX-800 A4000 PPC 604e-233 [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Grafikfehler unter UAE | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |