Aktuelle Zeit: 29.03.2024, 08:03

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: simple3D
BeitragVerfasst: 08.10.2009, 16:19 
Offline

Registriert: 20.03.2009, 10:02
Beiträge: 50
simple3D ist ein Wrapper für Irrlicht, Newton und irrKlang für die Sprachen BlitzPlus, Blitz3D und BlitzMax. Mein altes Projekt simpleIrr setzte noch auf gmans Irrlicht Wrapper für BlitzMax auf, das neue Projekt wird direkt in C++ implementiert und bietet eine gemeinsame Schnittstelle für alle drei Sprachen, während simpleIrr nur für BlitzMax gedacht war.

Ziel ist es einen ähnlich einfachen Syntax wie den von Blitz3D zu implementieren. gman hat mit seinem Irrlicht Wrapper zwar hervorragende Arbeit geleistet aber die Syntax ist halt an das Original angelehnt und beinhaltet elendig lange Funktionsnamen und kaum Vereinfachungen.

Derzeit bin ich bei Version 0.15, also noch ganz am Anfang. Es war zunächst wichtig alle benötigten Komponenten zusammen zu fassen und etwas zum "herum spielen" zu schaffen. Dieser Schritt ist getan, es sind alle drei Engines eingebaut ... nun folgt Schritt für Schritt die Komplettierung.

Um den Syntax mal zu zeigen poste ich hier den Quelltext des Blitz3D Samples welches dem Archiv beiliegt:
Code:
Include "../simple3D.bb"

Print "Bitte wähle das Device aus:"
Print " "
Print "1 = DirectX 9"
Print "2 = OpenGL"
Print "3 = Software"
Print " "
dev = Input("> ")

Select dev
   Case 1
      renderer = DEV_DX9
      rend$ = "DirectX 9"
   Case 2
      renderer = DEV_OGL
      rend$ = "OpenGL"
   Case 3
      renderer = DEV_SOFTWARE
      rend$ = "Software Renderer"
   Default
      renderer = DEV_DX9
      rend$ = "DirectX 9"
End Select

irrlicht% = s3d_Init()
s3d_Options(irrlicht, renderer, 1, 0)
s3d_SetAudioDriver(irrlicht, DRV_WIN_MM)

s3d_ClsMode(irrlicht, 1, 1)
s3d_ClsColor(irrlicht, 90, 120, 255)

result% = s3d_Graphics3D(irrlicht, 800, 600, 32, 0)
If result = 0 Then End

s3d_AddZip(irrlicht, "media.zip", 1, 1)

cam% = s3d_CreateFPSCamera(irrlicht, 0, 0.01, 80.0)
light% = s3d_CreateLight(irrlicht,LIGHT_POINT, 0)
light2% = s3d_CreateLight(irrlicht, LIGHT_POINT, 0)
light3%= s3d_CreateLight(irrlicht, LIGHT_POINT, 0)
boden% = s3d_LoadMesh(irrlicht, "plane/plane.b3d", 0)
s3d_ScaleTexture(boden, 0, 8.0, 8.0)


s3d_PositionEntity(light, -10, 50, -30)
s3d_PositionEntity(light2, 0.0, 50.0, 50.0)
s3d_PositionEntity(light3,0.0, -0.0, 0.0)

s3d_LightCastShadows(light, 1)

crate% = s3d_LoadMesh(irrlicht, "wcrate/wcrate.b3d", 0)

s3d_EntityPhysics(boden, PHYS_BOX, 0.0)

s3d_PositionEntity(crate, 0.0, 50.0, 0.0)
s3d_PositionEntity(boden, 0.0, 0.0, .00)
s3d_PositionEntity(cam, 0.0, 10.0, -20.0)

s3d_HideEntity(crate)
s3d_EntityShadow(crate)

s3d_SetGravity(-9.81 * 16.0)


sound% = s3d_LoadSound(irrlicht, "music.mod", S_AUTO_DETECT, 0)
s3d_Play3DSound(sound, 0)
s3d_PositionSound(sound, 0, 1, 0)



time%      = MilliSecs()
fps%      = -1
last_fps%   = -1
Repeat
   fps = s3d_GetFPS(irrlicht)
   If fps <> last_fps
      last_fps = fps
      title$ = "FPS: " + fps + " | " + rend$
      s3d_AppTitle(irrlicht, title)
   EndIf
   
   now = MilliSecs()
   If now-time > 2000
      crate2% = s3d_CopyMesh(crate, 0)
      s3d_PositionEntity(crate2, Rand(-1.0, 1.0), 50, Rand(-1.0, 1.0))
      s3d_EntityPhysics(crate2, PHYS_BOX, .5)
      s3d_EntityShadow(crate2)
      time = now
   EndIf
      
   s3d_CameraListener(cam)
   
   active = s3d_RenderWorld(irrlicht)
   
Until active <> 1 Or s3d_KeyHit(irrlicht, KEY_ESCAPE) = True

s3d_Drop(irrlicht)
End


Hier noch ein Screenshot vom aktuellen Sample ... den 3D Sound müsst ihr Euch beim Bild halt ausdenken ;)
Bild

Das gesamte Archiv kann man sich >>hier<< herunterladen (ca. 1,9MB). Ein ausführbares Beispiel ist im Verzeichnis "sample" zu finden, der Source liegt ebenfalls bei. Das alles ist "Windows only". Für BlitzMax wird es aber auch eine Linux und Mac Version geben.

Ich bedanke mich für die Aufmerksamkeit ;)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: simple3D
BeitragVerfasst: 09.10.2009, 13:41 
Offline
Moderator
Benutzeravatar

Registriert: 11.03.2007, 20:25
Beiträge: 556
Wohnort: Frankfurt/Main
hört sich vielversprechend an!

_________________
yo. life's so bloody short.
Ihr dachtet Schulfernsehn sei die ultimative Folter? Falsch: Fahrstuhlmusik, extra leise.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de