Seite 1 von 3

camera auf window zeichen

Verfasst: 05.08.2007 19:27
von TomTom
hi!

ich möchte meine 3d Camera auf einen fenster(window) zeichnen.

ich habe auch den befehl OpenWindowedScreen benutzt aber es kommt immer der Fehler:

OpenScreen() or OpenWindowedScreen() wird benötigt.

Hier mein code:

Code: Alles auswählen

InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()
ExamineDesktops()

OpenWindow(0,0,0,0,0,"3D-Editor by Thomas Brüggemann", #PB_Window_MinimizeGadget)
SetWindowState(0, #PB_Window_Maximize) 


CreateGadgetList(WindowID(0)) 

ButtonGadget(0, 0, 0, 70, 30, "Neuer Stein")
TextGadget(1, 0, 31, 70, 20, "Verschiebung:",#PB_Text_Center) 
StringGadget(2, 0, 51, 50, 20, "100",#PB_String_Numeric ) 
StringGadget(3, 0, 71, 50, 20, "100",#PB_String_Numeric ) 
StringGadget(4, 0, 91, 50, 20, "100",#PB_String_Numeric ) 
TextGadget(5, 51, 51, 19, 20, "X",#PB_Text_Border|#PB_Text_Center) 
TextGadget(6, 51, 71, 19, 20, "Y",#PB_Text_Border|#PB_Text_Center) 
TextGadget(7, 51, 91, 19, 20, "Z",#PB_Text_Border|#PB_Text_Center) 

TextGadget(8, 0, 111, 70, 20, "Drehung:",#PB_Text_Center) 
StringGadget(9, 0, 131, 50, 20, "0",#PB_String_Numeric ) 
StringGadget(10, 0, 151, 50, 20, "0",#PB_String_Numeric ) 
StringGadget(11, 0, 171, 50, 20, "0",#PB_String_Numeric ) 
TextGadget(12, 51, 131, 19, 20, "X",#PB_Text_Border|#PB_Text_Center) 
TextGadget(13, 51, 151, 19, 20, "Y",#PB_Text_Border|#PB_Text_Center) 
TextGadget(14, 51, 171, 19, 20, "Z",#PB_Text_Border|#PB_Text_Center) 

TextGadget(15, 0, 191, 70, 20, "Skallierung:",#PB_Text_Center) 
StringGadget(16, 0, 211, 50, 20, "100",#PB_String_Numeric ) 
StringGadget(17, 0, 231, 50, 20, "100",#PB_String_Numeric ) 
StringGadget(18, 0, 251, 50, 20, "100",#PB_String_Numeric ) 
TextGadget(19, 51, 211, 19, 20, "X",#PB_Text_Border|#PB_Text_Center) 
TextGadget(20, 51, 231, 19, 20, "Y",#PB_Text_Border|#PB_Text_Center) 
TextGadget(21, 51, 251, 19, 20, "Z",#PB_Text_Border|#PB_Text_Center) 


Structure stein
  x.d
  y.d
  z.d
  zoomx.d
  zoomy.d
  zoomz.d
  winkelx.d
  winkely.d
  an.d
  
EndStructure

Dim welt.stein(1000)



Procedure window()
  window0 = WindowEvent() 
  If window0 = #PB_Event_CloseWindow
    esc = 1
    ProcedureReturn esc
  EndIf
EndProcedure

OpenWindowedScreen(WindowID(0), 0, 0, 0, 0, 1, 100, 100)

CreateCamera(0, 0, 0, 50, 50)
CreateCamera(0, 50, 0, 50, 50)
CreateCamera(0, 0, 50, 50, 50)
CreateCamera(0, 50, 50, 50, 50)


Repeat
  esc = window()
 
  
  
  
Until esc = 1

thx @ all!

Verfasst: 05.08.2007 19:37
von Kaeru Gaman
hm... also deine kameras sollten schon mal unterschiedliche nummern tragen.

...und warum willst du nen screen in der größe NULL erstellen?

Verfasst: 05.08.2007 19:40
von TomTom
ich nutze ja SetWindowState(0, #PB_Window_Maximize) also ist es doch egal, das ich das auf 0 stehen habe.

die nummerierung der cameras habe ich vergessen(thx) aber deshab kommt der fehler ja nicht... ^^

Verfasst: 05.08.2007 19:43
von Kaeru Gaman
> also ist es doch egal, das ich das auf 0 stehen habe.
wieso sollte das egal sein... wenn dein screen 0x0 pixel groß ist, existiert er garnicht.

Verfasst: 05.08.2007 19:45
von TomTom
mom da habe auf 'AutoStretch' also ist die screen doch da(vollbild)

Verfasst: 05.08.2007 19:47
von Kaeru Gaman
aber wenn der screen 0x0 pixel groß ist, is das doch banane, wie sehr du ihn strecht...

Verfasst: 05.08.2007 19:50
von TomTom
aahhh jetzt check ich es!!

thx!!

:freak: hätte ich auch drauf kommen müssen

Verfasst: 05.08.2007 19:52
von ts-soft
Du erstellst die Gadgets auf dem Screen, bzw. nach Erstellung des Screens
befindet sich diese dort. Das kann nicht gehen :wink:

Verfasst: 05.08.2007 19:53
von Kaeru Gaman
beispiel:

Code: Alles auswählen

InitSprite()
OpenWindow(0, 0, 0, 200,200,"WinmdowedScreen")
OpenWindowedScreen(WindowID(0),0,0,50,50,1,0,0)

ClearScreen(0)
StartDrawing(ScreenOutput())
  For n=0 To 49 Step 2
    Line(n,0,50,50,$0000FF)
    Line(0,n,50,50,$0000FF)
  Next
StopDrawing()
FlipBuffers()
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
lass ma laufen.
du siehst deutlich, dass du ein rot-schwarzes karo-muster bekommst.

ein 50x50 großer screen wird auf ein 200x200 window gestrecht,
dadurch wird jedes screenpixel 4 desktoppixel groß.
ersetze mal die 50, 50 durch 10,10.

...wenn ich das beispiel schon geschrieben hab, wollte ichs auch posten...

[edit]
> Du erstellst die Gadgets auf dem Screen, bzw. nach Erstellung des Screens
> befindet sich diese dort.

das außerdem, wobei das nicht einen solchen error produzieren sollte.

ein rechtes und unteres offset hat er ja angegeben,
fehlt nur noch oben und links ne verschiebung,
wenn da auch gadgets sitzen sollen...

Verfasst: 05.08.2007 20:18
von TomTom
ich habe noch ein problem (er meldet zwar keinen fehler mehr aber er zeichnet nicht die Kameras)...