Viewport rotieren?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

Ava

Gast

Betreff: Viewport rotieren?

BeitragDi, Okt 11, 2005 2:11
Antworten mit Zitat
Huhu...

Seit Tagen schreibe ich an den Funktionen für meine neue TileEngine und nun plötzlich stoße ich völlig verpeilt auf ein Problem, das eigentlich von Anfang an so klar und deutlich im Raum stand... das ich bisher aber gar nicht realisiert hatte: Ein Viewport lässt sich nicht rotieren! Confused

Ja, verdammt ... und was nun?!

Ich muss meine Grafikausgabe irgendwie auf ein rotiertes Rect einschränken. Hat da jemand eine Idee, wie ich das bewerkstelligen könnte?! Diesen Bereich würde ich dann anschliessend gerne mit einem Hintergrund per TileImage ausfüllen. Also wären auch Alternativen mit gleichem Endergebniss durchaus interessant. 8)

Gruss, Ava
 

Dreamora

BeitragDi, Okt 11, 2005 6:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie meinst du das genau?

ich habe für meine ein Maskenset gemacht. Um danach die Sichtbarkeit auf eine gewisse Grenze zu reduzieren (das entsprechende Tile), habe ich dann einfach die Bilder kombiniert (vor dem effektiven durchlauf, beim generieren der Tiles) und gezeichnet. Dabei entfällt das gemaskte.

Alternativ liese sich dies per Alphamask erreichen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

rema

BeitragDi, Okt 11, 2005 6:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Da musst du halt umdenken!

Erstelle ein Viewport, und male alles da rein. Nun machst du ein Image und zeichnest dieses neu mit deiner gewünschten Rotation.
 

klepto2

BeitragDi, Okt 11, 2005 8:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Das müsste dir weiterhelfen (ist aber nur OpenGL) :
http://www.blitzbasic.com/Comm...opic=42799
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu

Justus

BeitragDi, Okt 11, 2005 14:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich deinen Wunsch richtig verstanden habe, würde ich einfach ein Rechteck mit transparentem Innenteil (dadurch sieht man dann das Spielfeld), quasi einen dicken Rahmen und dann dieses Bild scalen, rotieren, was auch immer.
 

Ava

Gast

BeitragDi, Okt 11, 2005 15:24
Antworten mit Zitat
@Rema Diese Idee kam mir ja auch schon. Und vielleicht wäre es eine Möglichkeit... wenn es nicht so übelst langsam wäre. Confused

@Dreamora Hm, wenn ich Dich richtig verstanden habe... *unsicherguck* ..dann glaube ich, ist das leider auch keine Lösung, die mir in meinem speziellen Problem weiterhelfen kann.. Confused

@Klepto Deinen Link würde ich mir sehr gerne anschauen! leider funktioniert er nicht.... mir kam aber gestern auch noch die Idee, ich könnte dieses Problem vielleicht mit einer 3D-Fläche lösen, die ich dann entsprechend texturiere und rotiere. Question Nur wie das genau in BMax funktionieren könnte, weis ich leider überhaupt nicht! Rolling Eyes

@Justus Das funktioniert leider auch nicht so einfach... weil direkt neben diesem "rotierten Viewport" noch andere Grafik sein könnte, die dann natürlich nicht überzeichnet werden soll!



Also es geht darum, dass meine TileEngine nicht aus einem einzigen Dimensionsfeld besteht, sondern aus vielen einzelnen miteinander verknüpften Räumen. Die Karte ist rotationsfähig... soweit habe ich das auch alles hinbekommen... doch nun brauche ich noch einen Paralaxhintergrund. Und diesen möchte ich halt gern mit TileImage in die Räume hineinzeichnen - und eben nur in die Räume und nicht über sie hinweg. Exclamation
 

klepto2

BeitragDi, Okt 11, 2005 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Musst glaub ich eingelogt sein, damit der Link funktioniert. Ich habe mal den Code hierher kopiert:

Code: [AUSKLAPPEN]

rem
bbdoc: Set the rotation of the viewport
about: SetViewRotation allows you to rotate the entire viewport, so that all
drawing is rotated according to the @angle parameter.
endrem
Function SetViewRotation(angle:Float)
   
   Global o_angle:Float
   
   glMatrixMode GL_PROJECTION
   glRotatef angle-o_angle,0,0,1
   o_angle=angle
   
   glMatrixMode GL_MODELVIEW
   glLoadIdentity
   
End Function

rem
bbdoc: Set the offset of the viewport
about: SetViewOffset allows you to offset the entire viewport, so that all
drawing is offset according to the @offsetx and @offsety parameters.
endrem
Function SetViewOffset(offsetx:Float,offsety:Float)
   
   Global o_offsetx:Float
   Global o_offsety:Float
   
   glMatrixMode GL_PROJECTION
   glTranslatef offsetx-o_offsetx,offsety-o_offsety,0
   o_offsetx = offsetx
   o_offsety = offsety
   
   glMatrixMode GL_MODELVIEW
   glLoadIdentity
   
End Function

rem
bbdoc: Set the zoom factor of the viewport
about: SetViewZoom allows you to zoom all drawn elements at once, instead
of scaling each individual element. Use the @zoom parameter to define the
level of zoom, a value of 0 is the default zoom, >0 zooms in, <0 zooms out.
endrem
Function SetViewZoom(zoom:Float)
   
   Global o_zoom:Float
   
   glMatrixMode GL_PROJECTION
   glScalef 1.0+(zoom-o_zoom),1.0+(zoom-o_zoom),1.0+(zoom-o_zoom)
   o_zoom = zoom
   
   glMatrixMode GL_MODELVIEW
   glLoadIdentity
   
End Function
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu
 

Ava

Gast

BeitragDi, Okt 11, 2005 15:56
Antworten mit Zitat
Justus hat Folgendes geschrieben:
Wenn ich deinen Wunsch richtig verstanden habe, würde ich einfach ein Rechteck mit transparentem Innenteil (dadurch sieht man dann das Spielfeld), quasi einen dicken Rahmen und dann dieses Bild scalen, rotieren, was auch immer.


Ich hatte gerade einen Geistesblitz.... vielleicht ist Dein Vorschlag gar nicht so unpassend, wie ich Anfangs gedacht habe! Meine TileEngine besitzt eine Funktion, mit der ich mir eine Minikarte erstellen kann... diese könnte ich vielleicht als Maske verwenden, skalieren und anschleissend über die Screen zeichnen, damit alles was ausserhalb der Räume liegt, schwarz erscheint! Shocked (Dank an Scoopex für's Brainstormen!!)


@klepto2
Danke das Du mir das kopiert hast, dass werde ich mir auf jeden Fall auch nochmal anschauen! interessiert mich sehr. Smile

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group