Auflösung 320x240

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

michi9999

Betreff: Auflösung 320x240

BeitragDi, Jun 26, 2007 1:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich habe vor ca. einem Monat angefangen, mich mit Blitz Basic zu beschäftigen. Ich kenne mich zwar mit einigen anderen Programmiersprachen gut aus, aber mit Blitz Basic habe ich noch ein paar kleine Probleme.
Mein größtes Problem ist folgendes:

Ich habe mir ein paar Sprites von "Super Mario World" geholt und möchte damit nun versuchen, ein kleines Spiel zu erstellen. Die einzelnen "Blöcke" der Grafik sind 15x15 groß. Die kleinstmögliche Auflösung, die Blitz Basic für den Graphic-Modus akzeptiert, ist 640x480.
Nun sehen die Blöcke bei dieser Auflösung aber ziemlich winzig aus, da dachte ich mir, ich setze die Auflösung des Bildschirms herab, dann sind die Blöcke größer. Ich habe schon folgendes ausprobiert, jedoch ohne Erfolg:

1) Den Graphic-Modus mit der Auflösung 320x240 aufrufen
-> geht, wie bereits beschrieben, nicht. Es kommt nur eine Fehlermeldung

2) Die Auflösung 640x480 nehmen, jedoch nur im Bereich 320x240 zeichnen. Dann diesen Bereich kopieren, mit ScaleImage auf die doppelte Größe vergrößern lassen und das Ergebnis ausgeben.
-> Das Bild ist zwar schön groß und sieht nett aus, aber der Befehl arbeitet viel zu langsam

3) Wie bei dem vorherigen Versuch nur im Bereich 320x240 zeichnen, dann ein neues Bild mit der Größe 640x480 erstellen. Dann den Imagebuffer und Backbuffer absperren und mit Hilfe von CopyPixelFast jeden Pixel vom Backbuffer vier Mal auf den Imagebuffer zeichnen (in ein 2x2 Quadrat). Dann das Bild ausgeben
-> Das Ergebnis ist wie bei der vorherigen Methode gut, allerdings vergisst dieser Befehl, dass ich bevor ich die Pixel kopiere den Bildschirm geleert habe, also befindet sich auf dem Bildschirm auch noch das Bild in der alten Größe. Und außerdem ist diese Methode immer noch zu langsam, es werden lediglich 5 Bilder pro Sekunde produziert.

4) Als letztes habe ich direkt am Anfang, nachdem ich die Bilder aus den Dateien gelesen habe, die einzelnen Blöcke mit ScaleImage vergrößert, also noch bevor die Grafikausgabe beginnt.
-> Die Geschwindigkeit ist super, aber die Grafik ist Müll, da dieser Befehl anscheinend Probleme mit der Transparenz hat. Als transparente Farbe habe ich Blau gewählt, nun habe ich um alle Teile einen kleinen blauen Rand.


Weitere Ideen habe ich nicht mehr. Vielleicht hat jemand von Euch noch eine Idee, wie ich mein Problem lösen könnte?

Danke im Voraus für Eure Antworten!

Xeres

Moderator

BeitragDi, Jun 26, 2007 3:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde die Bilder einfach mit einem Grafikprogramm extern vergrößern. Wenn das kein einzelnes, großes Bild ist, ist es etwas Arbeit, aber schneller wird es kaum gehen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Jun 26, 2007 3:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Das liegt eher an deiner Grafikkarte/Grafiktreiber oder anderem, als an Blitz. Mein Rechner kann folgende Auflösungen die noch kleiner als 640x480 sind.

320x200
320x240
400x300
512x384

in jeweils 16 oder 32 Bit Farbtiefe. Dafür kann ich überhaupt nicht mehr 24 Farbtiefe einstellen.

Hier ein Code der dir alle Auflösungen auflistet, die du unter Blitz bei Vollbild anwenden kannst.

Code: [AUSKLAPPEN]
AppTitle "Auflösung auswählen"
Graphics 480,800,0,2

For q=1 To CountGfxModes()
; If GfxMode3D(q)=1 Text 0,500+y,gfx_mode(q):y=y+Sgn(Int(Len(gfx_mode(q))))*16
 If GfxModeDepth(q)=16 y1=y1+16:Text 000,y1,q+" "+GfxMode3D(q)+" "+GfxModeWidth(q)+"·"+GfxModeHeight(q)+"·16"
 If GfxModeDepth(q)=24 y2=y2+16:Text 160,y2,q+" "+GfxMode3D(q)+" "+GfxModeWidth(q)+"·"+GfxModeHeight(q)+"·24"
 If GfxModeDepth(q)=32 y3=y3+16:Text 320,y3,q+" "+GfxMode3D(q)+" "+GfxModeWidth(q)+"·"+GfxModeHeight(q)+"·32"
Next

FlushKeys
WaitKey

EndGraphics
End


Function gfx_mode$(mode)

 ;Zusammenstellung
 xw#=GfxModeWidth(mode)
 yw#=GfxModeHeight(mode)
 dp%=GfxModeDepth(mode)
 If xw/yw=16.0/9.0 vh$=" (16:9)"
 If xw/yw=5.0/4.0 vh$=" (5:4)"
 If xw/yw=4.0/3.0 vh$=" (4:3)"

; Return Int(xw)+"·"+Int(yw)+"·"+dp+vh
 If dp=32 If Instr(vh,"4:3") Return Right("00"+mode,2)+" "+Int(xw)+"·"+Int(yw)+"·"+dp+vh

End Function

Bei mir sind es 29 verschiedene für jeweils 16 und 32 Bit Farbtiefe (also 58 Auflösungen).

Das ist auch der Grund, warum es so wichtig ist, den Spielern zu ermögichen sich eine eigene Grafikauflösung einstellen zu lassen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Dreamora

BeitragDi, Jun 26, 2007 7:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei meinem Rechner ist bei 640x480 schluss und ist auch gut so. Mein Bildschirm hat 1680x1050 Auflösung, da kann ich mit Gameboy grossen Fenstern nicht viel anfangen muss ich sagen, 320x240 macht nur auf TV Geräten noch im Ansatz einen Sinn fürchte ich ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

SpionAtom

BeitragDi, Jun 26, 2007 10:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutz doch
Code: [AUSKLAPPEN]
Graphics 320, 200, 16, 3


Dann bist du zwar im Fenstermodus, kannst das Fenster aber maximieren und musst dich nicht um Skalierung kümmern.
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

michi9999

BeitragDi, Jun 26, 2007 12:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
danke erstmal für Eure Antworten.
Tatsächlich ist diese kleine Auflösung auf meinem Computer nicht möglich.
Der Fenstermodus, wie ihn SpionAtom vorgeschlagen hat, erfüllt zwar seinen Zweck, allerdings stört dann die Fensterleiste von Windows.

Ich habe mir mal die kompletten Grafikbefehle von Blitz angeguckt, und bin auf folgenden gestoßen:
TFormFilter
Wenn ich diese Funktion abschalte, lassen sich die Bilder auch schon vor der Grafikausgabe skalieren, ohne dass die transparente Farbe "verwischt" wird.

Ich denke, ich werde damit mal ein bisschen rumexperimentieren.

4pac

BeitragMi, Aug 22, 2007 0:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Den Stress würde ich mir (an deiner Stelle) und meinem Prozessor nicht zumuten. Da legst du die Grafiken besser in 320 x 240 an, resized sie dann in einem Bildbearbeitungsprogramm per Stapelverarbeitung, wenn du alle fertig hast, auf doppelte Größe, und codest dann auf 640 x 480. Warum nicht, BB ist bei 640x480 immer noch rattenschnell, wenn man keine größeren Dummheiten reincodet, und von der Optik her dürfte es kaum einen Unterschied machen. Und das LoFi-Feeling kommt immer noch rüber.

Die Idee, in so geringer grafischer Auflösung ein Spiel zu entwickeln, finde ich sehr reizvoll.

Grüße,
4pac

Abrexxes

BeitragMi, Aug 22, 2007 3:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie hectic schon sagt legt Blitzbasic gar keine Auflösung fest. Der normale Weg ist folgender:

Arrow Blitzbasic schickt Anforderung an DX Schnittstelle
Arrow DX Schnittstelle fragt beim Betriebsystem an
Arrow Betriebsystem prüft ob die Graka den Modus unterstützt
Arrow Betriebsystem fragt an ob Monitor das unterstützt. (Bei einige Standard Treibern ist bei 640*480 Schluss, auch bei vielen TFTs da diese scalierung kein brauchbares Bild mehr liefert je nach Model, CRTs können selten diese Hfreq bringen die dazu nötig ist)
Arrow Arrow Beide OK dann kriegt Blitz die Freigabe und legt los
Arrow Arrow Einer versagt, Blitz blitz ab

cu

4pac

BeitragDo, Aug 23, 2007 17:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, aber macht trotzdem nicht so viel Sinn, für eine Auflösung zu coden, die viele GraKa´s gar nicht (mehr) unterstützen, und zukünftig wahrscheinlich auch noch immer weniger unterstützen werden.

Ich beziehe mich da u.a. auch auf die BB-Hilfeseiten, in denen es da heißt: "Valid graphic width and height varies GREATLY from card to card [...]. Common resolutions that are probably safe are 640x480 and 800x600."

Mit 640 x 480 ist man da schon eher auf der sicheren Seite. Es sei denn, michi9999 will das Spiel nur für sich selbst coden.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group