Seite 1 von 1

Brauche Hilfe bei Fehlermeldung...

Verfasst: 24.12.2008 15:52
von sechsrad
Error: Openscreen must be called before using any 3d commands.

Wo setze ich den Openscreen?

danke.

mfg

Code: Alles auswählen

#PB_Node_Node = 1
#PB_Node_Entity = 2

#CameraSpeed = 5
#NBNode   = 2
#NbBranche = 2

Define.l i, j
Dim entity(#NbBranche, #NBNode)
Dim Node(#NbBranche, #NBNode)

Enumeration
  #Window_0
EndEnumeration


    OpenWindow(#Window_0, 0, 0, 450, 320, "Test",    
    #PB_Window_SystemMenu | #PB_Window_SizeGadget | 
    #PB_Window_TitleBar )

    Define.f KeyX, KeyY, MouseX, MouseY

    InitEngine3D()

    Add3DArchive("Data\"          , #PB_3DArchive_FileSystem)
 
    InitSprite()
    InitKeyboard()
    InitMouse()
    
    CreateMesh(0, 100)
   
    SetMeshData(0, #PB_Mesh_Vertex | #PB_Mesh_Normal |  
    #PB_Mesh_Color, ?CubeData2, 8)
    SetMeshData(0, #PB_Mesh_Face, ?CubeDataIndex, 12)
   
    CreateMaterial(0, LoadTexture(0, "clouds.jpg"))
    MaterialAmbientColor(0, #PB_Material_AmbientColors)
    d=25
    For j = 0 To #NbBranche
      Node(j, 0) = CreateNode(#PB_Any,0,0,0)
      Entity(j, 0) = CreateEntity(#PB_Any, MeshID(0), MaterialID(0))
      ScaleEntity(Entity(j, 0),0.5,0.5,1)       
      AttachNodeObject(Node(j, 0),EntityID(Entity(j, 0)),#PB_Node_Entity)
      MoveEntity(entity(j, 0), 0, 0, d)
      For i = 1 To #NBNode
        Node(j, i) = CreateNode(#PB_Any,0,0,0)
        MoveNode(Node(j, i), 0, 0, d)
        AttachNodeObject(Node(j, i-1),NodeID(Node(j, i)),#PB_Node_Entity)
        entity(j, i) = CreateEntity(#PB_Any, MeshID(0), MaterialID(0))
        ScaleEntity(Entity(j, i),0.5,0.5,1)   
        AttachNodeObject(Node(j, i),EntityID(Entity(j, i)),#PB_Node_Entity)
        MoveEntity(entity(j, i), 0, 0, d)
      Next i
    Next j
     
    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0, 0, 0, 250)
 
    CreateLight(0,RGB(255,255,255),0,500,0)
    AmbientColor(RGB(85,85,85))
   
    Repeat
     
      ClearScreen(RGB(0, 0, 0))
           
      ExamineKeyboard()

      ExamineMouse()
     
      For j = 0 To #NbBranche
        RotateNode(Node(j, 0), 360.0/(#NbBranche+1) * j + (MouseX()/2),(45-(MouseY()/8)), 0)
        For i = 1 To #NBNode
          RotateNode(Node(j, i), 0,45-(MouseY()/8),0)
        Next i
      Next j
 
      RenderWorld()     
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1

   

End

#SQRT13 = 0.57735026

DataSection

  CubeData2:
   
    Data.f -10.0,10.0,-10.0        ; 0 position
    Data.f -#SQRT13,#SQRT13,-#SQRT13  ; 0 normal
    Data.l 255                        ; 0 colour
    Data.f 10.0,10.0,-10.0         ; 1 position
    Data.f #SQRT13,#SQRT13,-#SQRT13   ; 1 normal
    Data.l 255                        ; 1 colour
    Data.f 10.0,-10.0,-10.0        ; 2 position
    Data.f #SQRT13,-#SQRT13,-#SQRT13  ; 2 normal
    Data.l 255                        ; 2 colour
    Data.f -10.0,-10.0,-10.0       ; 3 position
    Data.f -#SQRT13,-#SQRT13,-#SQRT13 ; 3 normal
    Data.l 255                        ; 3 colour
    Data.f -10.0,10.0,10.0         ; 4 position
    Data.f -#SQRT13,#SQRT13,#SQRT13   ; 4 normal
    Data.l 255                        ; 4 colour
    Data.f 10.0,10.0,10.0          ; 5 position
    Data.f #SQRT13,#SQRT13,#SQRT13    ; 5 normal
    Data.l 255                        ; 5 colour
    Data.f 10.0,-10.0,10.0         ; 6 position
    Data.f #SQRT13,-#SQRT13,#SQRT13   ; 6 normal
    Data.l 255                        ; 6 colour
    Data.f -10.0,-10.0,10.0        ; 7 position
    Data.f -#SQRT13,-#SQRT13,#SQRT13  ; 7 normal
    Data.l 255                        ; 7 colour

  CubeDataIndex:
    Data.w 0,2,3
    Data.w 0,1,2
    Data.w 1,6,2
    Data.w 1,5,6
    Data.w 4,6,5
    Data.w 4,7,6
    Data.w 0,7,4
    Data.w 0,3,7
    Data.w 0,5,1
    Data.w 0,4,5
    Data.w 2,7,3
    Data.w 2,6,7
     
EndDataSection

Verfasst: 24.12.2008 15:59
von Andesdaf
ich bin in Screens nicht so bewandert, aber ich würde ihn direkt nach dem
öffnen des Fensters aufrufen.

Code: Alles auswählen

    hWnd=OpenWindow(#Window_0, 0, 0, 450, 320, "Test",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) 

Verfasst: 24.12.2008 16:06
von PMV
moment ... wenn du ein Fenster willst musst du OpenWindowedScreen()
verwenden. Willst du im Vollbildmodus arbeiten musst du die Windows-
Befehle ganz streichen. Und die initialisierungen vor dem öffnen eines
Screens. (InitSprite(), InitEngine3D(), InitKeyboard(), InitMouse())

MFG PMV

Verfasst: 24.12.2008 16:18
von Fluid Byte
Mal 'nen bissi aufgeräumt, is' ja Weihnachten und so ... :mrgreen:

Code: Alles auswählen

EnableExplicit

InitEngine3D() : InitSprite() : InitKeyboard() : InitMouse()

; * Windowed Screen
#SQRT13 = 0.57735026

#PB_Node_Node = 1
#PB_Node_Entity = 2

#CameraSpeed = 5
#NBNode   = 2
#NbBranche = 2

; * Arrays
Dim entity(#NbBranche,#NBNode)
Dim Node(#NbBranche,#NBNode)

; * Variables
Global hWnd

Define.l i, j, d = 25
Define.f KeyX, KeyY, MouseX, MouseY

; * Windowed Screen
hWnd = OpenWindow(0,0,0,640,480,"Test",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)

OpenWindowedScreen(hWnd,0,0,640,480,0,0,0)

; * Create Mesh
Add3DArchive(#PB_Compiler_Home + "Examples\Sources\Data\", #PB_3DArchive_FileSystem)

CreateMesh(0, 100)

SetMeshData(0,#PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color,?CubeData2,8)
SetMeshData(0,#PB_Mesh_Face, ?CubeDataIndex,12)

CreateMaterial(0,LoadTexture(0,"clouds.jpg"))
MaterialAmbientColor(0,#PB_Material_AmbientColors)

; * Mesh Nodes
For j = 0 To #NbBranche
	Node(j, 0) = CreateNode(#PB_Any,0,0,0)
	Entity(j,0) = CreateEntity(#PB_Any,MeshID(0),MaterialID(0))
	ScaleEntity(Entity(j,0),0.5,0.5,1)       
	AttachNodeObject(Node(j,0),EntityID(Entity(j,0)),#PB_Node_Entity)
	MoveEntity(entity(j,0),0,0,d)
	
	For i = 1 To #NBNode
	  Node(j,i) = CreateNode(#PB_Any,0,0,0)
	  MoveNode(Node(j,i),0,0,d)
	  AttachNodeObject(Node(j,i-1),NodeID(Node(j,i)),#PB_Node_Entity)
	  entity(j,i) = CreateEntity(#PB_Any,MeshID(0),MaterialID(0))
	  ScaleEntity(Entity(j,i),0.5,0.5,1)   
	  AttachNodeObject(Node(j,i),EntityID(Entity(j,i)),#PB_Node_Entity)
	  MoveEntity(entity(j,i),0,0,d)
	Next
Next

; * Camera Setup
CreateCamera(0,0,0,100,100)
CameraLocate(0,0,0,250)

CreateLight(0,RGB(255,255,255),0,500,0)
AmbientColor(RGB(85,85,85))

; ------------------------------------------------------------------------------------------------------
; MAIN LOOP
; ------------------------------------------------------------------------------------------------------

Repeat
	ClearScreen(0)
	     
	ExamineKeyboard()
	ExamineMouse()
	
	For j = 0 To #NbBranche
		RotateNode(Node(j,0),360.0 / (#NbBranche + 1) * j + (MouseX() / 2),(45 - (MouseY() / 8)),0)
		
		For i = 1 To #NBNode
			RotateNode(Node(j,i),0,45 - (MouseY() / 8),0)
		Next
	Next
	
	RenderWorld()
	FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)

; ------------------------------------------------------------------------------------------------------
; DATA SECTION
; ------------------------------------------------------------------------------------------------------

DataSection
	CubeData2:   
	Data.f -10.0,10.0,-10.0        ; 0 position
	Data.f -#SQRT13,#SQRT13,-#SQRT13  ; 0 normal
	Data.l 255                        ; 0 colour
	Data.f 10.0,10.0,-10.0         ; 1 position
	Data.f #SQRT13,#SQRT13,-#SQRT13   ; 1 normal
	Data.l 255                        ; 1 colour
	Data.f 10.0,-10.0,-10.0        ; 2 position
	Data.f #SQRT13,-#SQRT13,-#SQRT13  ; 2 normal
	Data.l 255                        ; 2 colour
	Data.f -10.0,-10.0,-10.0       ; 3 position
	Data.f -#SQRT13,-#SQRT13,-#SQRT13 ; 3 normal
	Data.l 255                        ; 3 colour
	Data.f -10.0,10.0,10.0         ; 4 position
	Data.f -#SQRT13,#SQRT13,#SQRT13   ; 4 normal
	Data.l 255                        ; 4 colour
	Data.f 10.0,10.0,10.0          ; 5 position
	Data.f #SQRT13,#SQRT13,#SQRT13    ; 5 normal
	Data.l 255                        ; 5 colour
	Data.f 10.0,-10.0,10.0         ; 6 position
	Data.f #SQRT13,-#SQRT13,#SQRT13   ; 6 normal
	Data.l 255                        ; 6 colour
	Data.f -10.0,-10.0,10.0        ; 7 position
	Data.f -#SQRT13,-#SQRT13,#SQRT13  ; 7 normal
	Data.l 255                        ; 7 colour
	
	CubeDataIndex:
	Data.w 0,2,3
	Data.w 0,1,2
	Data.w 1,6,2
	Data.w 1,5,6
	Data.w 4,6,5
	Data.w 4,7,6
	Data.w 0,7,4
	Data.w 0,3,7
	Data.w 0,5,1
	Data.w 0,4,5
	Data.w 2,7,3
	Data.w 2,6,7
EndDataSection 

Verfasst: 24.12.2008 16:29
von sechsrad
Jup, danke.
Funktioniert wunderbar.

Wünsche eine "Frohe Weihnacht".

So für heute ist schluss.

Danke.

mfg

Verfasst: 25.12.2008 16:53
von Andesdaf
ja eben... windowed Screen.

Verfasst: 26.12.2008 00:44
von PMV
Das ist ein großer unterschied für einen Anfänger :wink:

MFG PMV

Verfasst: 26.12.2008 09:32
von Rings
in der repeat schleife muss ein
WindowEvent()
rein, ansonsten hängt das PRG sich hier
bei mir auf (vista64) .

Verfasst: 26.12.2008 13:08
von Kaeru Gaman
es muss eine halbwegs brauchbare event-verarbeitung rein.

@Rings

hängt sich das wirklich?
das OS glaubt das nämlich auch dann, wenn die exe ein Fenster hat aber sein I/O nicht handelt, sprich, keine Events verarbeitet.

... oder ist V64 so schlau, und freezed ne Anwendung die sich nicht meldet?