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

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
bizzl
Beiträge: 82
Registriert: 08.09.2005 18:07
Computerausstattung: AMD Athlon II X4 635
Windows 7 64 Bit
Wohnort: Nordhessen - früher : Südniedersachsen

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

Beitrag 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)
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

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

Beitrag 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
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
bizzl
Beiträge: 82
Registriert: 08.09.2005 18:07
Computerausstattung: AMD Athlon II X4 635
Windows 7 64 Bit
Wohnort: Nordhessen - früher : Südniedersachsen

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

Beitrag 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
Zuletzt geändert von bizzl am 27.08.2011 13:12, insgesamt 1-mal geändert.
bizzl
Beiträge: 82
Registriert: 08.09.2005 18:07
Computerausstattung: AMD Athlon II X4 635
Windows 7 64 Bit
Wohnort: Nordhessen - früher : Südniedersachsen

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

Beitrag 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.
bizzl
Beiträge: 82
Registriert: 08.09.2005 18:07
Computerausstattung: AMD Athlon II X4 635
Windows 7 64 Bit
Wohnort: Nordhessen - früher : Südniedersachsen

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

Beitrag 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)
Zuletzt geändert von bizzl am 27.08.2011 14:26, insgesamt 1-mal geändert.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8812
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

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

Beitrag von NicTheQuick »

"Tesseleration"
Heißt das nicht "Tesselation"?
bizzl
Beiträge: 82
Registriert: 08.09.2005 18:07
Computerausstattung: AMD Athlon II X4 635
Windows 7 64 Bit
Wohnort: Nordhessen - früher : Südniedersachsen

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

Beitrag von bizzl »

NicTheQuick hat geschrieben:
"Tesseleration"
Heißt das nicht "Tesselation"?
Ja, du hast Recht - ich hab's geändert.
Antworten