Brauche Hilfe bei Fehlermeldung...

Anfängerfragen zum Programmieren mit PureBasic.
sechsrad
Rüpel
Beiträge: 112
Registriert: 01.02.2008 13:31

Brauche Hilfe bei Fehlermeldung...

Beitrag 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
Zuletzt geändert von sechsrad am 24.12.2008 16:26, insgesamt 1-mal geändert.
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag 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 ) 
Win11 x64 | PB 6.20
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag 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
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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 
Windows 10 Pro, 64-Bit / Outtakes | Derek
sechsrad
Rüpel
Beiträge: 112
Registriert: 01.02.2008 13:31

Beitrag von sechsrad »

Jup, danke.
Funktioniert wunderbar.

Wünsche eine "Frohe Weihnacht".

So für heute ist schluss.

Danke.

mfg
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

ja eben... windowed Screen.
Win11 x64 | PB 6.20
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Das ist ein großer unterschied für einen Anfänger :wink:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Beitrag von Rings »

in der repeat schleife muss ein
WindowEvent()
rein, ansonsten hängt das PRG sich hier
bei mir auf (vista64) .
Rings hat geschrieben:ziert sich nich beim zitieren
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten