Einstiegsbeispiel scheitert schon
Verfasst: 12.06.2018 08:41
Hallo,
nach meinen positiven Erfahrungen mit PB habe ich mich 'mal an die 3D-Grafik herangetraut. Dazu folgendes Beispiel aus dem PB-Buch (Danke an den Autor für die Bärenarbeit!)
Obiges Programm ist im Prinzip gut zu verstehen.
Im Verzeichnis des obigen Quelltextes habe ich den Ordner Data angelegt, indem auch die übernommenen Dateien Invader.mesh und Invader.png liegen.
Leider sehe ich beim Starten (PB 5.62 64-bit auf Windows 10) nur einen schwarzen Bildschirm. Das Programm wird nach ESCAPE ohne eine Fehlermeldung beendet.
Was mache ich falsch?
nach meinen positiven Erfahrungen mit PB habe ich mich 'mal an die 3D-Grafik herangetraut. Dazu folgendes Beispiel aus dem PB-Buch (Danke an den Autor für die Bärenarbeit!)
Code: Alles auswählen
Enumeration
#MESH
#TEX
#MAT
#OBJEKT_INVADER
#LICHT
#KAMERA_EINS
EndEnumeration
;Setzen der Breite, Höhe und Farbtiefe des Screens
;Aufgrund der Seitenbreite wurden hier abgekürzte Variablennamen verwendet :(
Global ScrB.i = 1024
Global ScrH.i = 768
Global ScrT.i = 32
;Andere Globale Variablen
Global Beenden.i = #False
;Einfache Prozedur zur Fehlerprüfung
Procedure Fehlerbehandlung(Ergebnis.i, Text.s)
If Ergebnis = 0
MessageRequester("Fehler", Text, #PB_MessageRequester_Ok)
End
EndIf
EndProcedure
;Initialisiere Umgebung
Fehlerbehandlung(InitEngine3D(), "InitEngine3D() fehlgeschlagen.")
Fehlerbehandlung(InitSprite(), "InitSprite() fehlgeschlagen.")
Fehlerbehandlung(OpenScreen(ScrB, ScrH, ScrT, ""), "Kann Screen n. öffnen.")
Fehlerbehandlung(InitKeyboard(), "InitKeyboard() fehlgeschlagen.")
SetFrameRate(60)
Add3DArchive("Data\", #PB_3DArchive_FileSystem)
Fehlerbehandlung(LoadMesh(#MESH, "Invader.mesh"), "Kann Mesh nicht laden")
Fehlerbehandlung(LoadTexture(#TEX, "Invader.png"), "Kann Textur nicht laden")
Fehlerbehandlung(CreateMaterial(#MAT, TextureID(#TEX)), "Kann Material n. erstell.")
CreateEntity(#OBJEKT_INVADER, MeshID(#MESH), MaterialID(#MAT))
CreateLight(#LICHT, RGB(255, 255, 255), 0, 5, 0)
CreateCamera(#KAMERA_EINS, 0, 0, 100, 100)
CameraLookAt(#KAMERA_EINS, 0, 1, 2.5)
RotateCamera(#KAMERA_EINS, -15, 0, 0)
;Hauptschleife
Repeat
y.i + 2
RotateEntity(#OBJEKT_INVADER, 0, y, 0)
RenderWorld()
FlipBuffers()
ExamineKeyboard()
If KeyboardReleased(#PB_Key_Escape)
Beenden = #True
EndIf
Until Beenden = #True
End
Im Verzeichnis des obigen Quelltextes habe ich den Ordner Data angelegt, indem auch die übernommenen Dateien Invader.mesh und Invader.png liegen.
Leider sehe ich beim Starten (PB 5.62 64-bit auf Windows 10) nur einen schwarzen Bildschirm. Das Programm wird nach ESCAPE ohne eine Fehlermeldung beendet.
Was mache ich falsch?