camera auf window zeichen

Anfängerfragen zum Programmieren mit PureBasic.
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

camera auf window zeichen

Beitrag 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!
Pure Basic 4.0
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

Beitrag 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... ^^
Pure Basic 4.0
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

Beitrag von TomTom »

mom da habe auf 'AutoStretch' also ist die screen doch da(vollbild)
Pure Basic 4.0
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

aber wenn der screen 0x0 pixel groß ist, is das doch banane, wie sehr du ihn strecht...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

Beitrag von TomTom »

aahhh jetzt check ich es!!

thx!!

:freak: hätte ich auch drauf kommen müssen
Pure Basic 4.0
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Du erstellst die Gadgets auf dem Screen, bzw. nach Erstellung des Screens
befindet sich diese dort. Das kann nicht gehen :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

Beitrag von TomTom »

ich habe noch ein problem (er meldet zwar keinen fehler mehr aber er zeichnet nicht die Kameras)...
Pure Basic 4.0
Antworten