Pixelart und Zoom
Übersicht

FaVoBetreff: Pixelart und Zoom |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo zusammen,
ich hoffe, dass hier überhaupt noch jemand aktiv ist *g* Ich möchte ein Spiel nach Pixelart machen und nutze eine virtual resolution von 320x240. Wenn ich dort nun Text ausgebe oder ein Bild 1zu1, dann ist das auch entsprechend Pixelig. Nur wenn ich eine Zoom-Funktion einbauen möchte, habe es mit setscale probiert, dann wird das Bild zwar entsprechend kleiner gerendert, aber es bleibt nicht in der 320x240 Auflösung sondern wird auch durch das setscale feiner dargestellt. Nachfolgend zu sehen, das Bild wird erst im scale 1 gerendert und dann 0.5. Es ist zwar dann nur halb so groß, wird aber nicht mehr "blockig" in der virtuellen Auflösung von 320x240 dargestellt sondern entsprechend in einer doppelt so hohen Auflösung. ![]() Hier ein Bild, wie es sein soll (die Auflösung des verkleinerten Bildes ist gleich mit dem Rest): ![]() Wie kann ich das am besten bewerkstelligen, dass es einen stufenlosen Zoom gibt, die Renderauflösung aber immer bei 320x240 bleibt? Mit setscale klappt es ja so nicht, vielleicht gehe ich auch komplett falsch an die Sache heran?! Danke! |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm interessant. Hätte dieses Verhalten bei Verwendung einer virtuellen Auflösung nicht erwartet - retrospektiv macht es aber durchaus Sinn, lediglich die Skalierungsfaktoren zu multiplizieren für die finale Ausgabe anstatt einen "Pixelfilter" darauf anzuwenden. Wegen Performance und so.
Eine Möglichkeit wäre, alles 1:1 in einen 320x240px Viewport zu rendern, diesen in ein 320x240px Bild zu "grabben" (GrabImage) und dieses entsprechend deinen "Virtual Resolution"-Wünschen skaliert zu zeichnen. Das Bild muss dann ohne das Filter-Flag erstellt werden und auf die virtuelle Auflösung wirst du wohl dann ganz verzichten müssen (und die Mauskoordinaten manuell skalieren). MfG |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
FaVo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Klingt interessant. Ist das denn schnell genug um es live zu machen? Image grabben klingt erstmal eher langsam. Ich werde den Weg mal probieren. Danke! | ||
FaVo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die Lösung mit grabimage funktioniert zwar prinzipiell, drückt aber die Performance von 1000 FPS auf 50 FPS. Und das nur in dem kleinen Test. Schade... | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax basiert doch auch OpenGL, so müssten doch die Standard Min- und Mag-Filter bzw. MIPMAP_NEAREST genutzt werden können. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
FaVo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hm, so im Detail kenne ich mich nicht damit aus... Kannst du beschreiben wie man da ran geht?
Danke |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich befürchte, es wird nicht viel bringen ![]() Anstelle mit Grabimage zu arbeiten, sollte es eigentlich (auch direkt über OpenGL-Befehle) möglich sein, in einen Texturbuffer zu rendern und diesen dann vergrössert zu zeichnen. Sollte einiges schneller sein. Klepto hat dazu mal etwas geschrieben: Echtes Render2Texture (OpenGL + FBO) |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
FaVo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Holzchopf
Das sieht sehr gut aus! Vielen Dank für den Hinweis! Allerdings muss ich mir das mal genauer zu Gemühte führen. Wenn ich das Beispiel ausführe, ist alles spiegelverkehrt gerendert. Das sieht man natürlich erst wenn man Text oder Grafiken mit einbindet, was in dem reinen Beispiel nicht der Fall ist. Aber auch das Problem lässt sich bestimmt irgendwie beheben. Dankeschön! |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht reicht es, die generierte Textur mit SetScale(-1,1) zu zeichnen | ||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
FaVo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Grundsätzlich funktioniert das schon mit SetScale(1, -1).
Sieht nach einem vielversprechendem Weg aus, ich werde das mal weiter austesten. Vielen Dank für den Hinweis! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group