Viewport rotieren?
Übersicht

AvaGastBetreff: Viewport rotieren? |
![]() 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! ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. | ||
AvaGast |
![]() 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. ![]() @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.. ![]() @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. ![]() ![]() @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. ![]() |
||
klepto2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
AvaGast |
![]() 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! ![]() @klepto2 Danke das Du mir das kopiert hast, dass werde ich mir auf jeden Fall auch nochmal anschauen! interessiert mich sehr. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group