amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Bild größer als Screen [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

19.08.2007, 18:07 Uhr

MaikG
Posts: 5172
Nutzer
Ich hab einen Code, der zeigt mir bilder per Datatypes.
Funktioniert auch alles sehr gut. Aber hab ich ein Bild
mit z.B. 1248x960x24 aber nur einen Screenmodus von 1200x1024x24
bekomme ich müll angezeigt.
Normalerweise, dadurch das jetzt auch ein Screen mit 1248x1024x24
geöffnet wird müsste das ja gehen. Aber das tut es nicht.
Bei einem Bild mit 2635x1846x24 wurde mir erst gar kein Screen
geöffnet.
Multiview zeigt diese Bilder(auf der WB in einem Fenster) problemlos
an. Was läuft da falsch?


code:
if (scr = OpenScreenTags (NULL,
                                    SA_Width,bmhd->bmh_Width,
                                    SA_Height,bmhd->bmh_Height,
                                    SA_Depth,bmhd->bmh_Depth,                                                                       
                                    SA_DisplayID,modeid,
                                    SA_AutoScroll, TRUE,
                                    SA_Overscan, OSCAN_TEXT,
                                    TAG_END))

                            if (win = OpenWindowTags (NULL,
                                            WA_CustomScreen,scr,
                                            WA_Width,scr->Width,
                                            WA_Height,scr->Height,
                                            WA_Flags,WFLG_BORDERLESS|WFLG_NOCAREREFRESH|WFLG_ACTIVATE,
                                            WA_IDCMP,IDCMP_MOUSEBUTTONS|IDCMP_VANILLAKEY,
                                            TAG_END))
                                    {
                                    BltBitMapRastPort (bm,0,0,win->RPort,0,0,win->Width,win->Height,0xc0);


[ - Antworten - Zitieren - Direktlink - ]

19.08.2007, 20:22 Uhr

uho
Posts: 114
Nutzer
Hallo MaikG,

hier mal eine Antwort "auf die Schnelle", da ich noch nichts
mit Datatypes programmiert habe:


Zitat:
Original von MaikG:

mit z.B. 1248x960x24 aber nur einen Screenmodus von 1200x1024x24
bekomme ich müll angezeigt.


Da werden wohl die Daten, die nicht mehr in die Zeile passen,
an den Anfang der nächsten geschrieben; diese wird dann entsprechend
später mit den zugehörigen Daten gefüllt, so daß sich der
Inhalt immer weiter verschiebt.

Zitat:
Bei einem Bild mit 2635x1846x24 wurde mir erst gar kein Screen
geöffnet.


Da wird wohl einfach der Grafik-Speicher nicht reichen.
Die CyberVisionPPC hat IMHO 8MB,

2635x1846x24/8 = ca 14 MB - also mehr als vorhanden.

Multiview scaliert dagegen.

Testen kannst Du das auch sehr schön mit dem Bildanzeiger Visage
(nebenbei: der ist _viel_ schneller und mächtiger als MV):

Bild normal laden -> Bild nicht da
Bild mit Parameter "Scale" laden -> Bild da

-> im ersten Fall Bild zu groß für GraKa, im zweiten skaliert


Gruß

uho

[ - Antworten - Zitieren - Direktlink - ]

20.08.2007, 00:07 Uhr

MaikG
Posts: 5172
Nutzer
>Da werden wohl die Daten, die nicht mehr in die Zeile passen,
>an den Anfang der nächsten geschrieben; diese wird dann entsprechend
>später mit den zugehörigen Daten gefüllt, so daß sich der
>Inhalt immer weiter verschiebt.

Das dürfte aber nicht sein, der Screen hat zwar 1200x1024x24,
kann aber lt. Screenmode auch besagte auflösung annehmen.
NewMode zeigt auch an das die Bildausmaße dem Screenausmaß
entspricht.


>Da wird wohl einfach der Grafik-Speicher nicht reichen.
>Die CyberVisionPPC hat IMHO 8MB

Oh, verstehe. Naja, ist zumindest dann kein BUG.


>Multiview scaliert dagegen.

Sicher? Ich denke eher, da es auf der WB mit Fenster ist kann
CGX das mittels Swappen Fastram<->GrakaRam Managen(Es ist ja immer
nur ein Teil des Bildes sichtbar).
Das Bild scheint nicht scaliert zu werden.

[ - Antworten - Zitieren - Direktlink - ]

20.08.2007, 10:31 Uhr

Der_Wanderer
Posts: 1229
Nutzer
Woher bekommst du denn den modeid ?
Nicht jeder Modeid kann auch jede Auflösung und Farbtiefe, die du ungefiltert von der Bitmap übergibst.

Wenn du einen Bildanzeiger machen willst, der nicht scaliert, dann würde ich eher ein borderless Fenster auf der WB öffnen, die Bitmap vom Datatype ins RAM laden und dann mit BltBmapRastPort() die Teile refreshen, die beim Scrollen neu gezeichnet werden müssen.
Scrollen kannst du mit ScrollRaster().
Das ist auch schöner für den User, weil sich der Screenmode nicht ändert.
Der Nachteil bei einem Übergrossen Screen ist, dass die Screenbitmap komplett im Graka RAM liegen muss. Das hat zur folge, dass nicht-sichtbare Screens ins RAM ausgelagert werden und die größe der Bilder auf das Graka RAM begrenzt sind. Bei der oben Beschriebenen Methode ist das Bild nur vom RAM begrenzt, und es werden keine Screens ausgelagert (=schneller).

Wenn du zoomem willst, dann kannst du mit ScalePixelArray() das ganz einfach tun, auch wenn die Qualität nicht so toll ist. Ansonsten kann das auch das Datatype für dich machen, da hast du u.U. bessere Qualität und brauchst weniger RAM.

BTW, in Amiblitz wäre so ein Anzeiger ein paar wenige Zeilen. ;-)

--
Thilo Köhler, Author von:
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de



[ Dieser Beitrag wurde von Der_Wanderer am 20.08.2007 um 10:35 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

21.08.2007, 10:15 Uhr

MaikG
Posts: 5172
Nutzer
>Woher bekommst du denn den modeid ?

Datatype, falls unterstützt.

>Wenn du einen Bildanzeiger machen willst, der nicht scaliert, dann würde ich eher ein borderless Fenster auf der WB öffnen, die Bitmap vom Datatype ins RAM laden und dann mit BltBmapRastPort() die Teile refreshen, die beim Scrollen neu gezeichnet werden müssen.

Ich überlege schon, also auf WB ist schlecht, es soll schon auf
einem Screen.
Wenn ich feststellen könnte wann der Grafikspeicher nicht mehr
ausreicht, könnte ich ja z.B. scalieren - aber alles andere normal
machen. Theoretisch hätte ich gedacht der Screen öffnet sich erst
gar nicht wenn nicht genug Speicher da ist.

[ - Antworten - Zitieren - Direktlink - ]

21.08.2007, 10:30 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von MaikG:
Theoretisch hätte ich gedacht der Screen öffnet sich erst gar nicht wenn nicht genug Speicher da ist.

Normalerweise schon.
Zitat:
Wenn ich feststellen könnte wann der Grafikspeicher nicht mehr ausreicht, könnte ich ja z.B. scalieren - aber alles andere normal machen.
Du könntest einfach generell den Screen mit normaler Größe öffnen, wenn das Bild größer als der OSAN_TEXT Bereich ist. Du blittest ja sowieso von einer schon vorhandenen BitMap, die das ganze Bild enthält. Dann blittest Du halt nur einen Ausschnitt (musst ja nicht skalieren) und blittest einen neuen Ausschnitt, wenn der Benutzer die Maus in den Randbereich bewegt.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

21.08.2007, 18:27 Uhr

MaikG
Posts: 5172
Nutzer
>Normalerweise schon.

Naja, cgx ist leider nicht völlig bugfrei...



>Du könntest einfach generell den Screen mit normaler Größe öffnen,
>wenn das Bild größer als der OSAN_TEXT Bereich ist.

Und woher weiss ich ob der User eine Maximalauflösung von 1280x1024x24
oder nur 1024x768x24 hat?

[ - Antworten - Zitieren - Direktlink - ]

21.08.2007, 18:30 Uhr

Der_Wanderer
Posts: 1229
Nutzer
@MaikG

Denk doch nochmal über ein Fenster auf der WB nach.
Dann musst du dich nicht mit Overscann, Auflösungen etc. herumplagen, und für den User ist das meistens auch angenehmer, weil der Monitor nicht neu syncen muss, und der WB Screen muss geswapped werden bei wenig GFX mem.

Warum muss es denn unbedingt ein eigener Screen sein ?


--
Thilo Köhler, Author von:
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

21.08.2007, 23:21 Uhr

MaikG
Posts: 5172
Nutzer
Warum muss es denn unbedingt ein eigener Screen sein ?

-Ein bild alleine auf FullScreen sieht besser aus
-Ein bild auf schwarzen hintergrund sieht besser aus
-Meine WB hat 800x600, viele Bilder würden nicht draufpassen
-Bilder mit z.B. 640x512 währen zu klein

usw.

[ - Antworten - Zitieren - Direktlink - ]

21.08.2007, 23:37 Uhr

Ralf27
Posts: 2779
Nutzer
Das ganze hier erinnert mich an meinen Bildanzeiger. Der zeigt auch Bilder an der nicht in den Grafikkartenspeicher passen, (also auch so wie z.b. MultiView) bzw. sogar gar nicht mal in den Arbeitsspeicher.

Das beste ist halt, das man dann einfach bei übergroßen Bildern scrollt und neue Bereiche neu rein blittet.
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

21.08.2007, 23:37 Uhr

Ralf27
Posts: 2779
Nutzer
Zitat:
Original von Der_Wanderer:
BTW, in Amiblitz wäre so ein Anzeiger ein paar wenige Zeilen. ;-)


Aber bestimmt nur für jemanden der AmiBlitz kann... I-) :D
--
http://www.alternativercomputerclub.de.vu

[ - Antworten - Zitieren - Direktlink - ]

22.08.2007, 10:00 Uhr

MaikG
Posts: 5172
Nutzer
>Das beste ist halt, das man dann einfach bei übergroßen Bildern scrollt und neue Bereiche neu rein blittet.

Ich weiss aber nicht was übergroß ist, weil ich die max. Auflösung des
jeweiligen Systems nicht kenne.


[ - Antworten - Zitieren - Direktlink - ]

22.08.2007, 10:14 Uhr

thomas
Posts: 7716
Nutzer
Zitat:
Ich weiss aber nicht was übergroß ist, weil ich die max. Auflösung des
jeweiligen Systems nicht kenne.


Warum nicht ?

Laß doch einfach den Benutzer einen Bildschirmmodus auswählen oder nimm den gleichen wie die Workbench. Dann öffnest du einen Screen und fragst seine Größe ab.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomasrapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

22.08.2007, 10:29 Uhr

MaikG
Posts: 5172
Nutzer
>Warum nicht ?

Ich weiss nicht wie.

>Laß doch einfach den Benutzer einen Bildschirmmodus auswählen oder
>nimm den gleichen wie die Workbench.

Bei jedem Bild ein Screenmoderequester, das währe sehr umständlich...
Der WB-Screen von mir hat 800x600, wie gesagt ich habe größere
Bilder und auch noch höhere auflösungen verfügbar.

[ - Antworten - Zitieren - Direktlink - ]

22.08.2007, 10:56 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Der_Wanderer:
Warum muss es denn unbedingt ein eigener Screen sein ?

Bildschirmfüllende, rahmenlose Fenster wecken beim Benutzer den Wunsch, mit den Standard-Tastenkombinationen auf die Workbench, bzw. zwischen den Programmen wechseln zu können. Fenster, die alles überdecken und keinen sichtbare Kontrollelemente besitzen, sind halt kein guter Stil.
Zitat:
Original von MaikG:
>Das beste ist halt, das man dann einfach bei übergroßen Bildern scrollt und neue Bereiche neu rein blittet.

Ich weiss aber nicht was übergroß ist, weil ich die max. Auflösung des
jeweiligen Systems nicht kenne.

Herrje, wir haben aber erst vor ein paar Tagen einen Thread mit Screen-Thematik gehabt:
http://www.amiga-news.de/forum/thread.php?id=26802&BoardID=7

Ich empfehle, mal ein bisschen in anderen Threads mitzulesen, auch wenn sie vielleicht nur zu 80% mit den eigenen Problemen zu tun haben. Man kann immer etwas dazulernen...

=>
QueryOverscan(ModeID, &Rect, OSCAN_TEXT )

Damit ermittelst Du den Bereich, der OSCAN_TEXT für diese ID definiert ist, und hast somit auch die Größe.

Also, in etwa so:
C code:
struct Rectangle normal;
int width, height;
QueryOverscan(modeid, &normal, OSCAN_TEXT);
width=normal.MaxX-normal.MinX+1;
height=normal.MaxY-normal.MinY+1;
if(width>bmhd->bmh_Width) width=bmhd->bmh_Width;
if(height>bmhd->bmh_Height) height=bmhd->bmh_Height;
if(scr = OpenScreenTags(NULL,
          SA_Width,width, SA_Height,height,
          SA_Depth,bmhd->bmh_Depth,
          SA_DisplayID,modeid,
          SA_AutoScroll, TRUE,
          SA_Overscan, OSCAN_TEXT,
          TAG_END))
    if(win = OpenWindowTags(NULL,
              WA_CustomScreen,scr,
              WA_Flags,WFLG_BORDERLESS|WFLG_NOCAREREFRESH|WFLG_ACTIVATE,
              WA_IDCMP,IDCMP_MOUSEBUTTONS|IDCMP_VANILLAKEY,
              TAG_END))
    {
        BltBitMapRastPort(bm,0,0,win->RPort,0,0,win->Width,win->Height,0xc0);
...


mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

EDIT: +1 vergessen :glow:

[ Dieser Beitrag wurde von Holger am 22.08.2007 um 11:29 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

22.08.2007, 13:36 Uhr

thomas
Posts: 7716
Nutzer
Zitat:
Bei jedem Bild ein Screenmoderequester, das währe sehr umständlich...

Du sollst den Benutzer einen Bildschirmmodus auswählen lassen, der dann für alle Bilder gilt. Nichts ist schlimmer als eine automatische Auswahl, die nicht funktioniert. Doch, wenn jedes Bild einen eigenen Screen öffnet und der Monitor jedesmal neu synchronisiert.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: thomasrapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

22.08.2007, 13:58 Uhr

whose
Posts: 2156
Nutzer
@Holger:

Ich schätze, es geht ihm weniger um Overscan, dafür mehr um die maximal mögliche Auflösung der jeweilgen Hardware (AGA/ECS bzw. RTG). Bei RTG würde QueryOverscan() wenig bis gar nichts bringen, dadurch wüßte er immer noch nicht, was die maximal mögliche Auflösung der jeweiligen Hardware wäre. BestModeID() würde da mehr bringen, aber ob das für seinen Verwendungszweck (soweit ich den erraten kann) wirklich das Optimale ist, bezweifelt nicht nur thomas...

@MaikG:

Wenn Du den Benutzer unbedingt mit ständigen Modus-Wechseln nerven willst, schau Dir mal das RKM Kapitel Screens an, da findest Du alles, was zum Ermitteln der maximal möglichen Auflösung eines Systems notwendig ist. In bestimmten Fällen wirst Du aber um eine Filterung der Modes "per Hand" anhand der Erebnisse der DisplayInfo-Struktur nicht herumkommen.

Ich selbst würde mehr thomas' Ratschlag folgen. Eine Auflösung durch den Benutzer wählen lassen und die Bilder dann auf diesen Screen bringen, bei Übergrösse halt auf einen AutoScroll-Screen. Sollten Probleme mit dem verfügbaren Speicher auftauchen, dann auf Ralphs Art, das Bild nur teilweise zu laden und nur die aktuell sichtbaren Teile (zzgl. Scroll-"Reserve") im Speicher halten.

Für "mal eben" ist ein Bildanzeiger für Bilder unterschiedlichen Formats aber definitiv nichts, das nur zur Warnung.

Grüße

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Antworten - Zitieren - Direktlink - ]

22.08.2007, 15:52 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von whose:
@Holger:

Ich schätze, es geht ihm weniger um Overscan, dafür mehr um die maximal mögliche Auflösung der jeweilgen Hardware (AGA/ECS bzw. RTG). Bei RTG würde QueryOverscan() wenig bis gar nichts bringen, dadurch wüßte er immer noch nicht, was die maximal mögliche Auflösung der jeweiligen Hardware wäre.

Nö, er benutzt ja in seinem Code, den er gepostet hat, irgendeine schon gegebene modeid. Vermutlich die vom datatype gelieferte. Es kann also nur noch darum gehen, welche max. sichtbare Größe der zugehörige Screen hat. Und wenn OSCAN_TEXT und die id schon gegeben sind, liefert der besagte QueryOverscan(...) Aufruf die nötigen Informationen.

mfg

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

22.08.2007, 16:05 Uhr

MaikG
Posts: 5172
Nutzer
>Du sollst den Benutzer einen Bildschirmmodus auswählen lassen,
>der dann für alle Bilder gilt.

Nein! Das will ich nicht ein 1600x1200 schirm ist zu groß für
ein 320x240 und umgekehrt.


>Nö, er benutzt ja in seinem Code, den er gepostet hat,
>irgendeine schon gegebene modeid.

Die Modeid ist optional in bildern verwendet und kann bei DT's
auch 0 sein.
Im prinzip bräuchte ich eine Liste der verfügbaren auflösungen,
so wie ein Screenmoderequester. Dann könnte ich gucken ob
die auflösung vom bild die max. übertrifft.

Bestmodeid währe ja auch eine möglichkeit, wenn die gelieferte ID
kleiner als das Bild ist wird es ja die größte sein oder?

[ - Antworten - Zitieren - Direktlink - ]

22.08.2007, 16:24 Uhr

Flinx
Posts: 1073
Nutzer
Zitat:
Original von MaikG:
Nein! Das will ich nicht ein 1600x1200 schirm ist zu groß für
ein 320x240 und umgekehrt.


Die Auflösung ist Sache des Anwenders. Ein Bildbetrachter hat zu skalieren, wenn es nötig ist.

[ - Antworten - Zitieren - Direktlink - ]

22.08.2007, 17:00 Uhr

Der_Wanderer
Posts: 1229
Nutzer
Also die Zeiten, wo man die Auflösung des Monitors der Auflösung des zu betrachteten Bildes angepasst hat, sind doch eigentlich schon ein paar Jährchen vorbei, oder nicht ? Und vor allem, wenn man einen TFT Monitor hat.

Es gibt nichts, was ich mehr hasse, als ein Programm was ständig die Auflösung oder die Farbtiefe wechselt. Man kann auch ein 8bit Bild auf einem 24it Screen angucken, oder ein 320x240 auf 1600x1200 gross zoomen, dazu muss ich nicht den Monitor stressen.

Ich dachte das mit dem übergrossen Screen willst du machen, weil du das Bild immer 1:1 sehen willst, und dann darin herumscrollen.

Wenn es dir aber um einen "normalen" Bilderbetrachter geht, dann würde ich auf jedenfall den WB Screen nutzen und das Bild scalieren
(kleiner so wie auch größer).

ScalePixelArray ist hier die einfachst Methode, um das zu erreichen.

Amiblitz Code:
*** WEBUNG ***
code:
WBToScreen 0
If image_Load{0,"DH0:MyImage.png"}
  Window 0,0,0,ScreenWidth,ScreenHeight,#WFLG_BORDERLESS|#WFLG_SIMPLEREFRESH,""
  image_BlitScaled{0,0,0,ScreenWidth,ScreenHeight}
  MouseWait
End If
End

*** WERBUNG ***
Das ist ungefähr dass, was du machen willst ?
(ok, ich achte nicht auf den x/y Aspekt, wollte den Code
kurz halten)

Das kostet dich 0 Graka RAM, nur normales RAM so gross wie das Originalbild ist, kein Monitor muss syncen und du siehst immer das ganze Bild fullscreen, und Interpolation/Antialiasing gibts noch gratis dazu ;-)

--
Thilo Köhler, Author von:
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

22.08.2007, 18:30 Uhr

MaikG
Posts: 5172
Nutzer
>Man kann auch ein 8bit Bild auf einem 24it Screen angucken, oder
>ein 320x240 auf 1600x1200 gross zoomen, dazu muss ich nicht den
>Monitor stressen.

Muss man nicht, aber einer mit 68020 wirds sicher lustig finden
wenn er lange auf sein 320x240 Bild warten muss - was länger
dauert als das Monitor Syncen.
Klar der Aspect Ratio soll auch stimmen, wie gesagt, viele
gründe warum es so sein soll.

Wie man scaliert weiss ich schon.


[ - Antworten - Zitieren - Direktlink - ]

22.08.2007, 19:01 Uhr

Der_Wanderer
Posts: 1229
Nutzer
Och Maik!

1. Auf dem A1200 mit nem 20er hast du sicher keine WB auf 1600x1200, und wenn, bist du Wartezeiten gewöhnt.

2. Scalieren geht furchtbar schnell, wenn man nicht interpoliert. Das Interpolieren kannst du dann auch abschaltbar machen, für Low-Spec Rechner.

3. Den Aspekt hab ich irgnoriert, um den Code nicht unnötig aufzublähen. Hier mit korrektem Aspekt und schwarzem Hintergrund:

code:
; Workbench Screen als "Screen 0" holen
WBToScreen 0

; Bild laden
If image_Load{0,"DH0:MyImage.png"}
  ; Fenster auf der WB fullscreen öffnen
  Window 0,0,0,ScreenWidth,ScreenHeight,#WFLG_BORDERLESS|#WFLG_SIMPLEREFRESH,""

  ; Hintergrund schwarz machen
  WBox 0,0,ScreenWidth,ScreenHeight,1 ; pen 1 = schwarz

  ; neue Größe und Blit Position berechnen
  scalerX.f   = ScreenWidth  / image_GetWidth {0}
  scalerY.f   = ScreenHeight / image_GetHeight{0}
  scaler.f    = Min(scalerX,scalerY)
  newWidth.l  = image_GetWidth {0} * scaler
  newHeight.l = image_GetHeight{0} * scaler
  newX.l      = (ScreenWidth  - newWidth ) / 2
  newY.l      = (ScreenHeight - newHeight) / 2

  ; Bild drauf blitten
  image_BlitScaled{0,newX,newY,newWidth,newHeight,off}

  ; auf Mausklick warten
  MouseWait
End If

; over and out!
End


Die Screenmode zu wechseln ist noch viel gefährlicher, wenn dir der Aspekt wichtig ist. Oben schalte ich bei BlitScaled auch noch die Interpolation aus, wegen dem A1200 :-)


--
Thilo Köhler, Author von:
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ Dieser Beitrag wurde von Der_Wanderer am 22.08.2007 um 19:08 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

23.08.2007, 10:26 Uhr

MaikG
Posts: 5172
Nutzer
>1. Auf dem A1200 mit nem 20er hast du sicher keine WB auf 1600x1200, und wenn, bist du Wartezeiten gewöhnt.

Woher willst du das wissen?

Und zum 100ersten mal ich will einen eigenen Screen und nicht auf
die Workbench.

[ - Antworten - Zitieren - Direktlink - ]

23.08.2007, 13:14 Uhr

whose
Posts: 2156
Nutzer
@MaikG:

Ja, dann mach das doch so... in die grobe Richtung wurdest Du schon gewiesen, oder möchtest Du alles vorgekaut haben? RKM "Screens" ist der Punkt, wo Du anfangen solltest. Desweiteren solltest Du Dir die zugehörigen Includes mal näher ansehen, da findest Du u.A. Informationen über die möglichen Auflösungen des jeweiligen Systems. Der Rest ist Deine Aufgabe und wenn Du unbedingt dauernd die Auflösung wechseln möchtest, dann machs halt...
--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Antworten - Zitieren - Direktlink - ]

23.08.2007, 14:27 Uhr

Der_Wanderer
Posts: 1229
Nutzer
@Maik:

Mein Beispiel von oben ist ja schon das komplette Program, du müsstest das nur per copy&paste in den Amiblitz editor kopieren und ausführen. (XInclude "image.include.bb2" muss noch davor.)

Ein Fenster öffnen hat viele Vorteile:

1. Es braucht keinen zusätzlichen Grafikspeicher, d.h. es schlägt sehr unwahrscheinlich fehl - im Gegensatz zu einem Screen.

2. Es ist um Welten schneller als ein Screen zu öffnen der möglicherweise syncen muss. Auch auf einem A1200 mit einer WB in 1600x1200. Der Screen erzwingt bei Speichermangel auch einen Swap des WB Screens ins RAM, das dauert auch ne Weile, bei ZorroII.

3. Für den User ist kein Unterschied zu erkennen zu einem Screen, ausser dass es garantiert nicht neu synced und schneller ist.

4. Der User hat normalerweise den optimalen Screenmode für die WB gewählt, und den würde er auch gerne behalten.
(das gilt zumindest für neuere Systeme, wo die Speed keine so grosse Rolle mehr spielt und man 16/24bit benutzt)

Wenn du trotzdem einen Screen aufmachen willst, dann mach halt. Argumente habe ich dir ja genug geliefert, warum man das nicht machen solltest.

BTW, das Beispiel in Amiblitz kann man durch zwei Zeilen auf einen eigenen Screen lenken:
code:
modeid.l = screen_GetBestModeID{width,height,depth}
If screen_Open{modeid,width,height,depth} 
...
EndIf

--
Thilo Köhler, Author von:
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de



[ Dieser Beitrag wurde von Der_Wanderer am 23.08.2007 um 14:31 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Bild größer als Screen [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.