ich versuche mich gerade das erste mal an einer kleinen 3D Anwendung und wollte den CreateTerrain Befehl benutzen. Allerdings ernte ich damit immer nur einen schwarzen Bildschirm. Wenn ich ihn auskommentiere wird die eingebaute SkyBox normal angezeigt.
Die SkyBox hab ich selber gezeichnet, die terrain Daten sind aus dem mitgelieferten PureBasic Beispiel entnommen. Hier der Code:
Code: Alles auswählen
InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()
Enumeration
#CAMERA
EndEnumeration
OpenScreen(1024,768,32,"3D-Test")
Add3DArchive("Data\", #PB_3DArchive_FileSystem)
ClearScreen(0,0,0)
CreateCamera(#CAMERA, 0,0,100,100)
CameraLocate(#CAMERA, 128, 25, 128)
AmbientColor(RGB(255,255,255))
CreateMaterial (0, LoadTexture(0, "terrain_texture.jpg"))
AddMaterialLayer(0, LoadTexture(1, "terrain_detail.jpg"), 1)
CreateTerrain("terrain.png", MaterialID(0), 4, 0.6, 4, 4)
SkyDome("Sky.jpg",1)
Repeat
ExamineKeyboard() : ExamineMouse()
RotateCamera(#CAMERA, -MouseDeltaX(),0,0)
RotateCamera(#CAMERA, 0,-MouseDeltaY(),0)
If KeyboardPushed(#PB_Key_Up) : MoveCamera(#CAMERA, 1,0,0) : ElseIf KeyboardPushed(#PB_Key_Down) : MoveCamera(#CAMERA, -1,0,0) : EndIf
If KeyboardPushed(#PB_Key_Left) : MoveCamera(#CAMERA, 0,0,1) : ElseIf KeyboardPushed(#PB_Key_Right) : MoveCamera(#CAMERA, 0,0,-1) : EndIf
RenderWorld()
StartDrawing(ScreenOutput())
FrontColor(255,100,100) : DrawingMode(1)
Locate(0,0) : DrawText("Camera: X="+Str(CameraX(#CAMERA)) + " Y="+Str(CameraY(#CAMERA))+" Z="+Str(CameraZ(#CAMERA)))
Locate(0,12) : DrawText("FPS="+StrF(Engine3DFrameRate(0), 1))
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End
Sodele, nun bin ich doch noch selbst darauf gekommen. Anscheinend ist es wichtig das man die Kamera erst nach dem CreateTerrain erstellt. Zummindest hats bei mir dann funktioniert.