Seite 1 von 1

Verdoppeln der Auflösung ohne Änderung des Quellcodes

Verfasst: 06.10.2008 23:19
von Lebostein
Hi,

im Zusammenhang mit der Diskussion um das Zoomen von Sprites (http://www.purebasic.fr/german/viewtopi ... 5&start=50) hatte ich grade eine Idee, bei einer geringen Auflösung eines (Retro-)Spiels (z.B. 320 x 240 oder 640 x 480) diese ohne Änderung des Quellcodes zu verdoppeln oder zu verdreifachen (da viele heutige Grafikkarten mit 320 x 240 zum Beispiel nicht mehr klarkommen). Ganz einfach durch "Überladen" der ganz normalen Sprite-Funktionen:

Includedatei: http://www.lebostein.de/tomysoft/temp/Zoomer.pb

Hier ein kleines Beispiel zum Testen:

Code: Alles auswählen

; mit dieser Zeile wird alles mit einer Auflösung x 2 dargestellt
; ohne den Code irgendwie zu verändern:

; ------------------------------------------
;IncludeFile "Zoomer.pb"
; ------------------------------------------

InitSprite()
InitKeyboard()

OpenScreen(640, 480, 32, "Sprite")

LoadSprite(1, #PB_Compiler_Home + "Examples/Sources/Data/PureBasic.bmp")
LoadSprite(5, #PB_Compiler_Home + "Examples/Sources/Data/Geebee2.bmp")
TransparentSpriteColor(5, $FF00FF)

add = 1

Repeat

  FlipBuffers()

  ClearScreen(RGB(0,0,0))

  For px = 0 To 3
  For py = 0 To 13
  DisplaySprite(1, px * 169, py * 36)
  Next py
  Next px

  DisplaySprite(1, x, x)

  ClipSprite(5, 0, 0, x, x/2)
  DisplayTransparentSprite(5, x, 100)
  DisplayTransparentSprite(5, 600-x, x)
  x + add

  If x > 400 Or x < 0: add * -1: EndIf

  StartDrawing(ScreenOutput())
  DrawText(10, 10, "Hallo")
  StopDrawing()

  ExamineKeyboard()

Until KeyboardPushed(#PB_Key_Escape)
Das es sich hierbei (nach dem Einfügen der Zeile IncludeFile "Zoomer.pb" um die doppelte Auflösung handelt, ist nur an der kleineren Textausgabe "Hallo" zu erkennen, da ja die 2DDrawing-Befehle davon nicht betroffen sind.

Natürlich könnte man an dem eigentlichen Zoomen des geladenen Sprites (hier über ImageResize realisiert) noch andere Möglichkeiten finden, aber an sich sollte die Vorgehensweise mit dem "Überladen" ohne Probleme funktionieren. Ich habe es jedenfalls schon erfolgreich an einigen meiner kleinen PB-Spiele mit geringerer Auflösung getestet.