Ich schreib hier Trotzdem mal ein Beispiel für ein PB- hin.
Code: Alles auswählen
InitKeyboard()
InitEngine3D()
InitSprite()
InitMouse()
OpenWindow(0, 50, 50, 640, 480, #PB_Window_SystemMenu, "3D - Würfel")
OpenWindowedScreen(WindowID(0), 0, 0, 640, 480, 0, 0, 0)
Procedure RCol()
ProcedureReturn RGB(Random(240)+15, Random(235)+20, Random(235)+20)
EndProcedure
Procedure NewMaterial(N)
CreateTexture(N, 256, 256)
StartDrawing(TextureOutput(N))
Box( 0, 0, 128, 128, RCol())
Box( 0, 128, 128, 128, RCol())
Box(128, 0, 128, 128, RCol())
Box(128, 128, 128, 128, RCol())
StopDrawing()
CreateMaterial (0, TextureID(N))
ProcedureReturn MaterialID(0)
EndProcedure
;- Kamera einstellen
CreateCamera(0, 0, 5, 100, 90)
CameraLocate(0, 33, 56, -66)
CameraLookAt(0, 10, 10, 15)
DataSection
V_01:
Data.f 00,00,00 ;Point 0
Data.f 32,00,00 ;Point 1
Data.f 00,00,32 ;Point 2
Data.f 32,00,32 ;Point 3
Data.f 00,32,00 ;Point 4
Data.f 32,32,00 ;Point 5 P2 P3
Data.f 00,32,32 ;Point 6 *------------------*
Data.f 32,32,32 ;Point 7 / \ _________ D0 / |
T_01: ; P0 / D1 \ / D5|
Data.w 0, 1, 2 ;Dreieck 0 (oben) *------------------*\ |
Data.w 2, 1, 3 ;Dreieck 1 |\ P1| | |
Data.w 6, 5, 4 ;Dreieck 2 (unten) | \ D8 | | |
Data.w 7, 5, 6 ;Dreieck 3 | \ | | |
Data.w 7, 1, 5 ;Dreieck 4 (rechts) | \ | \ |
Data.w 3, 1, 7 ;Dreieck 5 | \ | | |
Data.w 0, 6, 4 ;Dreieck 6 (links) | \ | | |
Data.w 2, 6, 0 ;Dreieck 7 | D9 \ | \|
Data.w 5, 1, 0 ;Dreieck 8 (vorne) | \ | D4 * P7
Data.w 0, 4, 5 ;Dreieck 9 | \ | /
Data.w 2, 3, 7 ;Dreieck 10 (hinten) *------------------*/
Data.w 7, 6, 2 ;Dreieck 11 P4 P5
U_01:
Data.f 0.0, 0.0 ; Vertex 0
Data.f 0.0, 1.0 ; Vertex 1
Data.f 1.0, 0.0 ; Vertex 2
Data.f 1.0, 1.0 ; Vertex 3
Data.f 0.0, 0.0 ; Vertex 4
Data.f 0.0, 1.0 ; Vertex 5
Data.f 1.0, 0.0 ; Vertex 6
Data.f 1.0, 1.0 ; Vertex 7
EndDataSection
CreateMesh(0)
SetMeshData(0, #PB_Mesh_Vertices, ?V_01, 08)
SetMeshData(0, #PB_Mesh_Triangles, ?T_01, 12)
SetMeshData(0, #PB_Mesh_UVCoordinates, ?U_01, 08)
CreateEntity(0, MeshID(0), NewMaterial(0))
EntityLocate(0, 5, 0, 5)
;- Hauptschleife
Repeat
RenderWorld()
StartDrawing(ScreenOutput())
Locate(4, 3)
FrontColor(255,255,255) : BackColor(0,0,0)
DrawText("Position = " +Str(CameraX(0))+ " ; " +Str(CameraY(0))+ " ; " + Str(CameraZ(0)) + Space(10))
Locate(4, 460) : DrawText("Auf = Num8 | Ab = Num2 | Textur ändern = Eingabe | Drehen = Strg rechts")
StopDrawing()
FlipBuffers()
ExamineKeyboard()
If KeyboardPushed(#PB_Key_All)
Zm = 0 : Xm = 0 : Ym = 0
If KeyboardPushed(#PB_Key_Up) : Zm = -2.1 : EndIf
If KeyboardPushed(#PB_Key_Down) : Zm = 2.1 : EndIf
If KeyboardPushed(#PB_Key_Right) : Xm = 2.1 : EndIf
If KeyboardPushed(#PB_Key_Left) : Xm = -2.1 : EndIf
If KeyboardPushed(#PB_Key_Pad8) : Ym = 2.1 : EndIf
If KeyboardPushed(#PB_Key_Pad2) : Ym = -2.1 : EndIf
If KeyboardPushed(#PB_Key_Return) : N*-1+1 : EntityMaterial(0, NewMaterial(N)) : EndIf
MoveCamera(0, Xm, Ym, Zm)
If KeyboardPushed(#PB_Key_RightControl)
ReleaseMouse(0)
ExamineMouse()
RotateCamera(0, -MouseDeltaX(), -MouseDeltaY(), 0)
MouseLocate(320, 240)
EndIf
EndIf
If KeyboardReleased(#PB_Key_RightControl) : ReleaseMouse(1) : EndIf
RotateEntity(0, 0.1, 0.05, 0.1)
Until KeyboardPushed(#PB_Key_Escape) Or WindowEvent() = #PB_Event_CloseWindow
CloseScreen()
End