Seite 1 von 1

Beispiele zu neuen Funktionen in PB4.60 (Beta 4)

Verfasst: 27.08.2011 11:34
von bizzl
Ich experimentiere gerade mit PureBasic 4.60 Beta 4.
Hier ein erstes Ergebnis:

Code: Alles auswählen

EnableExplicit

;{ InitSystem
CompilerIf #PB_Compiler_Debugger=#True 
  #ScrW=800
  #ScrH=600
 CompilerElse
  #ScrW=800
  #ScrH=600 
CompilerEndIf
#STitle=""



If InitSprite()=0:End:EndIf 
If InitKeyboard()=0:End:EndIf 
If InitMouse()=0:End:EndIf 
If InitSprite3D()=0:End:EndIf 
If InitSound()=0:End:EndIf
If InitEngine3D()=0:End:EndIf

CompilerIf #PB_Compiler_Debugger=#False 
  OpenScreen(#ScrW,#ScrH,32,#STitle,#PB_Screen_WaitSynchronization,60)
 CompilerElse
  ExamineDesktops()
  OpenWindow(1,(DesktopWidth(0)-#ScrW)/2,(DesktopHeight(0)-#ScrH)/2,#ScrW,#ScrH,#STitle)
  OpenWindowedScreen(WindowID(1),0,0,#ScrW,#ScrH,1,0,0)
  SetFrameRate(60)
CompilerEndIf
;}

Enumeration 
  #cube
  #cylinder
  #sphere
EndEnumeration

CreateCube(#cube,10)
CreateEntity(#cube, MeshID(#cube),0,-30,0,0)
CreateCylinder(#cylinder,10,25)
CreateEntity(#cylinder, MeshID(#cylinder),0,0,0,0)
CreateSphere(#sphere,10)
CreateEntity(#sphere, MeshID(#sphere),0,30,0,0)
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0,0,0,100)

Repeat
  CompilerIf #PB_Compiler_Debugger=#True
  Repeat
    Select (WindowEvent())
      Case #Null
        Break 1
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
  CompilerEndIf
  ExamineKeyboard()
  RenderWorld()
  FlipBuffers() 
Until KeyboardPushed(#PB_Key_Escape)

Re: Beispiele zu neuen Funktionen in PB4.60 (Beta 4)

Verfasst: 27.08.2011 11:55
von ts-soft
:allright:

Ein kurzer Hinweis auf die benutzten neuen Funktionen wäre hilfreich, damit man weiß, was man probiert.
Zumal diese ja noch nicht in der Hilfe beschrieben sind. :wink:

Code: Alles auswählen

CreateCube()
CreateCylinder()
CreateSphere()
sind es wohl in diesem Falle.

Gruß
Thomas

Re: Beispiele zu neuen Funktionen in PB4.60 (Beta 4)

Verfasst: 27.08.2011 12:35
von bizzl
ts-soft hat geschrieben::allright:

Ein kurzer Hinweis auf die benutzten neuen Funktionen wäre hilfreich, damit man weiß, was man probiert.
Zumal diese ja noch nicht in der Hilfe beschrieben sind. :wink:

Code: Alles auswählen

CreateCube()
CreateCylinder()
CreateSphere()
sind es wohl in diesem Falle.

Gruß
Thomas
Sorry - du hast Recht, ich gelobe Besserung :D

Re: Beispiele zu neuen Funktionen in PB4.60 (Beta 4)

Verfasst: 27.08.2011 12:53
von bizzl

Code: Alles auswählen

CreateCube(#Mesh,Size) erzeugt ein würfelförmiges Mesh mit der Kantenlänge "Size
CreateCylinder(#Mesh,Radius,Length[,Tesselation,CloseTop,Oblique) erzeugt ein zylinderförmiges Mesh
               mit dem Radius "Radius" und der Länge "Length".
               Die Parameter "Tesselation,CloseTop,Oblique" werden unten erklärt.
CreateSphere(#Mesh,Radius[,Segments,Rings]) erzeugt ein kugelfürmiges Mesh 
             mit dem Radius "Radius","Segments" Segmenten und "Rings" Ringen.
Zylinder:
Je höher "Tesselation", desto "runder" ist der Zylinder,
ein Wert von z.B. 3 erzeugt einen sechseckigen Zylinder.
Wenn "CloseTop" auf 1 gesetzt wird, hat der Zylinder einen "Deckel".
Je höher "Oblique " gesetzt wird, desto "schiefer" ist der Zylinder.

Kugel:
Je höher "Segments" und "Rings", desto "runder" wird die Kugel, allerdings vermute ich, daß damit auch der Speicherverbrauch ansteigt.

Re: Beispiele zu neuen Funktionen in PB4.60 (Beta 4)

Verfasst: 27.08.2011 13:34
von bizzl
Im folgenden Beispiel rotieren 5 Zylinder deren Werte für "Tesselation" von links nach rechts 2,4,6,8 und 10 betragen:

Code: Alles auswählen

EnableExplicit

;{ InitSystem
CompilerIf #PB_Compiler_Debugger=#True 
  #ScrW=800
  #ScrH=600
CompilerElse
  #ScrW=800
  #ScrH=600 
CompilerEndIf
#STitle=""



If InitSprite()=0:End:EndIf 
If InitKeyboard()=0:End:EndIf 
If InitMouse()=0:End:EndIf 
If InitSprite3D()=0:End:EndIf 
If InitSound()=0:End:EndIf
If InitEngine3D()=0:End:EndIf

CompilerIf #PB_Compiler_Debugger=#False 
  OpenScreen(#ScrW,#ScrH,32,#STitle,#PB_Screen_WaitSynchronization,60)
CompilerElse
  ExamineDesktops()
  OpenWindow(1,(DesktopWidth(0)-#ScrW)/2,(DesktopHeight(0)-#ScrH)/2,#ScrW,#ScrH,#STitle)
  OpenWindowedScreen(WindowID(1),0,0,#ScrW,#ScrH,1,0,0)
  SetFrameRate(60)
CompilerEndIf
;}

Define r.f,x

CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0,0,0,100)
CreateLight(1,RGB(255,255,255),0,40,0)
If CreateTexture(1,256,256)                ;Textur "on the fly" erzeugen
    If StartDrawing(TextureOutput(1))
    Box(0,0,256,256,RGB(200, 200, 10))
    StopDrawing()
  EndIf
  CreateMaterial(1,TextureID(1))
EndIf


For x=1 To 5
  CreateCylinder(x,8,20,2*x,1,0)
  CreateEntity(x,MeshID(x),MaterialID(1),20*x-60,0,0)
Next

Repeat
  CompilerIf #PB_Compiler_Debugger=#True
    Repeat
      Select (WindowEvent())
        Case #Null
          Break 1
        Case #PB_Event_CloseWindow
          End
      EndSelect
    ForEver
  CompilerEndIf
  ExamineKeyboard()
  For x=1 To 5
    RotateEntity(x,r,0,0)
  Next
  r+2
  If r>=360:r-360:EndIf
  
  RenderWorld()
  FlipBuffers() 
Until KeyboardPushed(#PB_Key_Escape)

Re: Beispiele zu neuen Funktionen in PB4.60 (Beta 4)

Verfasst: 27.08.2011 13:48
von NicTheQuick
"Tesseleration"
Heißt das nicht "Tesselation"?

Re: Beispiele zu neuen Funktionen in PB4.60 (Beta 4)

Verfasst: 27.08.2011 14:27
von bizzl
NicTheQuick hat geschrieben:
"Tesseleration"
Heißt das nicht "Tesselation"?
Ja, du hast Recht - ich hab's geändert.