Canvas... Problem <- GELÖST

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Mathias-Kwiatkowski

Betreff: Canvas... Problem <- GELÖST

BeitragDo, Nov 19, 2015 9:07
Antworten mit Zitat
Benutzer-Profile anzeigen
hi leute ich habe nun einen folgenden quelltext raus genommen. und ihn ein klein wenig abgewandt.

aber erst mal zum problem was ich habe.
wenn man ein fenster erstellt + ein darin liegendes canvas etwas grafisch ausmalt ect... dann das fenster schließt und im gleichen athemzug wieder neu eröffnet gibt es keinerlei probleme. ABER ist in der draw routine ein DrawText so gibt es direckt ein DX fehler...

(der code ohne draw text rennt, egal wie oft ihr das fenster schliesst... probiert es mal aus)
Code: [AUSKLAPPEN]
' createcanvas.bmx
Import MaxGui.Drivers
Strict
Global GAME_WIDTH=320
Global GAME_HEIGHT=240
' create a centered window with client size GAME_WIDTH,GAME_HEIGHT
Local wx=(ClientWidth(Desktop())-GAME_WIDTH)/2
Local wy=(ClientHeight(Desktop())-GAME_HEIGHT)/2
Local window:TGadget=CreateWindow("My Canvas",wx,wy,GAME_WIDTH,GAME_HEIGHT,Null,WINDOW_TITLEBAR|WINDOW_CLIENTCOORDS)
' create a canvas for our game
Local canvas:TGadget=CreateCanvas(0,0,320,240,window)
' create an update timer
CreateTimer 60
While WaitEvent()
   Select EventID()
      Case EVENT_TIMERTICK
         RedrawGadget canvas

      Case EVENT_GADGETPAINT
         SetGraphics CanvasGraphics(canvas)
         SetOrigin 160,120
         SetLineWidth 5
         Cls
         Local t=MilliSecs()
         DrawLine 0,0,120*Cos(t),120*Sin(t)
         DrawLine 0,0,80*Cos(t/60),80*Sin(t/60)
         'DrawText "LOL",100,100
         Flip

      Case EVENT_MOUSEMOVE
         Print "MOVE!"

      Case EVENT_WINDOWCLOSE
         FreeGadget canvas
         FreeGadget window
         window:TGadget=CreateWindow("My Canvas",wx,wy,GAME_WIDTH,GAME_HEIGHT,Null,WINDOW_TITLEBAR|WINDOW_CLIENTCOORDS)
         canvas:TGadget=CreateCanvas(0,0,320,240,window)
   End Select
Wend


Wenn ihr diesen Quelltext nun ausprobiert habt ohne ihn zu verändern. werdet ihr feststellen das alles in ordnung ist. nun geht in zeile 27 und nehmt den komentar raus ( also so das der befehl Drawtext auch genutzt wird)
anstelle ' Drawtext einfach ohne das '

...

startet den code und versucht es nochmal... ihr werdet sehen ihr könnt das fenster nichmal einmal schliessen ohne das ein direct x fehler auftaucht.

warum ist das so und wie kann ich das ändern, das es funktioniert?

so was auch immer das ist....
ichhabe es wie folgt gelöst


Code: [AUSKLAPPEN]
' createcanvas.bmx
Import MaxGui.Drivers
Strict
Global GAME_WIDTH=320
Global GAME_HEIGHT=240
' create a centered window with client size GAME_WIDTH,GAME_HEIGHT
Local wx=(ClientWidth(Desktop())-GAME_WIDTH)/2
Local wy=(ClientHeight(Desktop())-GAME_HEIGHT)/2
Local window:TGadget=CreateWindow("My Canvas",wx,wy,GAME_WIDTH,GAME_HEIGHT,Null,WINDOW_TITLEBAR|WINDOW_CLIENTCOORDS)
' create a canvas for our game
Local canvas:TGadget=CreateCanvas(0,0,320,240,window)
' create an update timer
SetGraphicsDriver( GLGraphicsDriver())

CreateTimer 60
While WaitEvent()
   Select EventID()
      Case EVENT_TIMERTICK
         RedrawGadget canvas

      Case EVENT_GADGETPAINT
         SetGraphics CanvasGraphics(canvas)

         SetOrigin 160,120
         SetLineWidth 5
         Cls
         Local t=MilliSecs()
         DrawLine 0,0,120*Cos(t),120*Sin(t)
         DrawLine 0,0,80*Cos(t/60),80*Sin(t/60)
         DrawText "LOL",100,100
         Flip

      Case EVENT_MOUSEMOVE
         Print "MOVE!"

      Case EVENT_WINDOWCLOSE
         EndGraphics()
         FreeGadget canvas
         FreeGadget window
         window:TGadget=CreateWindow("My Canvas",wx,wy,GAME_WIDTH,GAME_HEIGHT,Null,WINDOW_TITLEBAR|WINDOW_CLIENTCOORDS)
         canvas:TGadget=CreateCanvas(0,0,320,240,window)
         SetGraphicsDriver( GLGraphicsDriver())
   End Select
Wend



(nach jedem erstellen des canvas SetGraphicsDriver( GLGraphicsDriver()) und es funktioniert...
Skype: Anarchie1984
http://projektworks.de/maxbase/
Icq - Erneuert am 21.08.2017
Yahoo - Erneuert am 21.08.2017

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group