miniB3D in maxGui Canvas

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Trust

Betreff: miniB3D in maxGui Canvas

BeitragMo, Mai 14, 2012 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist das möglich?

BlitzMax: [AUSKLAPPEN]

SuperStrict

Import sidesign.minib3d
Import maxgui.drivers


Local win:TGadget = CreateWindow("Test", 0, 0, 800, 600)
Local canvas:TGadget = CreateCanvas(0, 0, 800, 600, win)

SetGraphics CanvasGraphics(canvas)


Local cam:TCamera = CreateCamera()
Local l:TLight = CreateLight()
Local cube:TEntity = CreateCube()

PositionEntity(cam, 0, 0, 0)
PositionEntity(l, 0, 10, 10)
PositionEntity(cube, 0, 0, 5)


Repeat
Cls

TurnEntity(cube, 1, 2, 0)
UpdateWorld()
RenderWorld()

Flip(1)
Until AppTerminate() Or KeyHit(KEY_ESCAPE)


Habe nur einen schwarzen Canvas.
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
  • Zuletzt bearbeitet von Trust am Mo, Mai 14, 2012 22:10, insgesamt 2-mal bearbeitet

Holzchopf

Meisterpacker

BeitragMo, Mai 14, 2012 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Irgendwoher (wahrscheinlich aus dem englischen BMax-Forum) habe ich diesen Code, der zumindest bei mir einwandfrei funktioniert BlitzMax: [AUSKLAPPEN]
SuperStrict

Import MaxGui.Drivers
Import sidesign.Minib3d


Global GAME_WIDTH:Int=320
Global GAME_HEIGHT:Int=240

' create a centered window with client size GAME_WIDTH,GAME_HEIGHT

Local wx:Int=(ClientWidth(Desktop())-GAME_WIDTH)/2
Local wy:Int=(ClientHeight(Desktop())-GAME_HEIGHT)/2

DebugStop
Local window:TGadget=CreateWindow("My Canvas",wx,wy,GAME_WIDTH,GAME_HEIGHT,Null,WINDOW_TITLEBAR|WINDOW_CLIENTCOORDS|WINDOW_RESIZABLE)


' create a canvas for our game
SetGraphicsDriver(GLMax2DDriver())
Local canvas:TGadget=CreateCanvas(0,0,320,240,window)
canvas.SetLayout( EDGE_ALIGNED, EDGE_ALIGNED, EDGE_ALIGNED, EDGE_ALIGNED )
SetGraphics CanvasGraphics(canvas)

TGlobal.width=320
TGlobal.height=240
TGlobal.depth=0
TGlobal.mode=2
TGlobal.rate=60
TGlobal.GraphicsInit()

Local cam:TCamera = CreateCamera()
PositionEntity cam, 0,0,-10
CameraClsColor cam, 255,0,0
CameraClsMode cam, 0, 1

Local cube:TMesh = CreateCube()

Local Light:TLight = CreateLight()
RotateEntity light, 60, 30, 0
AmbientLight 255,255,255

' create an update timer
CreateTimer(60)

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

Case EVENT_GADGETPAINT
SetGraphics CanvasGraphics(canvas)
'TGlobal.width = ClientWidth(canvas)
'TGlobal.height = ClientHeight(canvas)
SetViewport(0,0, ClientWidth(canvas),ClientHeight(canvas))
SetVirtualResolution ClientWidth(canvas), ClientHeight(canvas)

SetOrigin 160,120
SetLineWidth 5
Cls
Local t:Int=MilliSecs()
DrawLine 0,0,120*Cos(t),120*Sin(t)
DrawLine 0,0,80*Cos(t/60),80*Sin(t/60)
BeginMax2D
DrawText "hallo", 0,0
EndMax2D

TurnEntity cube, 1,2,3

RenderWorld()

Flip 0

Case EVENT_WINDOWCLOSE
FreeGadget canvas
End

Case EVENT_APPTERMINATE
End
End Select
Wend


Hilft dir das weiter?
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Trust

BeitragMo, Mai 14, 2012 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, ja jetzt funktionierts...

Habe meinen Testcode angepasst und die fehlenden, benötigten Codestellen mit einem Pfeil gekennzeichnet.

BlitzMax: [AUSKLAPPEN]
SuperStrict

Import maxgui.drivers
Import sidesign.minib3d



SetGraphicsDriver(GLMax2DDriver()) ' <---

Local win:TGadget = CreateWindow("Test", 0, 0, 800, 600)
Local canvas:TGadget = CreateCanvas(0, 0, 800, 600, win)

canvas.SetLayout(EDGE_ALIGNED, EDGE_ALIGNED, EDGE_ALIGNED, EDGE_ALIGNED)
SetGraphics CanvasGraphics(canvas)
TGlobal.width = 800 ' <---
TGlobal.height = 600 ' <---
TGlobal.depth = 0 ' <---
TGlobal.mode = 2 ' <---
TGlobal.rate = 60 ' <---
TGlobal.GraphicsInit() ' <---


Local cam:TCamera = CreateCamera()
Local l:TLight = CreateLight()
Local cube:TEntity = CreateCube()

PositionEntity(cam, 0, 0, 0)
PositionEntity(l, 0, 10, 10)
PositionEntity(cube, 0, 0, 5)


Repeat
Cls

TurnEntity(cube, 1, 2, 0)

RenderWorld()

Flip(1)
Until AppTerminate() Or KeyHit(KEY_ESCAPE)



Nur, eine dumme Frage: von wo kommt TGlobal, bzw. wozu gehört das?
Finde leider nichts dazu in der Referenz
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.

Holzchopf

Meisterpacker

BeitragMo, Mai 14, 2012 23:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahhh, schön dass du's noch angepasst hast Smile Ich wollte zuerst auch einfach deinen Testcode anpassen, hab' ihn aber gar nicht erst zum Laufen gekriegt =/ Irgendwann hat mich dann die Geduld verlassen Mr. Green

TGlobal gehört zu minib3d. Die Referenz sagt dir das nicht? Confused Such mal nach HotDocs. Ich arbeite damit und das ist oftmals aussagefreudiger als die normale BBdoc

mfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Trust

BeitragDi, Mai 15, 2012 11:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, hatte zuerst auch gezweifelt das es so ohne weiteres möglich ist. Da minib3d ja ein eigenes renderwindow benutzt. Dachte man müsste es über Umwege machen und dem maxgui Fenster das handle vom minib3d renderwindow geben. Verstehe leider noch nicht genau wie das intern von statten geht. Denn canvas ist doch die renderfläche vom maxgui Modul. Wieso kann minib3d da was einzeichnen? Scheinbar wird die Übergabe des Handels intern von setgraphics Canvasgraphics geregelt. Nur wie genau, weiss ich leider noch nicht. Glaube mit TGlobal.GraphicsInit() wird die Renderfläche von miniB3D einfach nur über das maxgui canvas gelegt. Aber was dann das SetGraphics CanvasGraphics bringen soll, keine Ahnung.


Ich benutze BLide mit einer von HotDocs generierten Docu. In BLide kann man auf ein Schlüsselwort klicken und F1 drücken, und BLide zeigt dir falls vorhanden, dann den Eintrag in der Docu. Nur bei TGlobal hat's mir nix angezeigt. Auch nach dem neu generieren der Docu nicht.
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group