Irrlich (Again and Again)

For everything that's not in any way related to PureBasic. General chat etc...
Num3
PureBasic Expert
PureBasic Expert
Posts: 2812
Joined: Fri Apr 25, 2003 4:51 pm
Location: Portugal, Lisbon
Contact:

Irrlich (Again and Again)

Post by Num3 »

Irrlich is a free 3d Engine for windows, linux and Mac using D3D, OpenGL and its own software renderer, and it has reached version 1.0 now!
http://irrlicht.sourceforge.net/index.html

A Freebasic user has made a C wrapper DLL around the c++ source code.
http://irrlicht.sourceforge.net/phpBB2/ ... hp?t=12416

Now my intention with this post is one of two :P

a) Fred drop's Ogre for good and get's Irrlich using DX8

b) We make a community efford to recode the freebasic stuff to Pure
Fred
Administrator
Administrator
Posts: 18351
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Post by Fred »

We won't drop OGRE, so the only option left is b) :P
Num3
PureBasic Expert
PureBasic Expert
Posts: 2812
Joined: Fri Apr 25, 2003 4:51 pm
Location: Portugal, Lisbon
Contact:

Post by Num3 »

Fred wrote:We won't drop OGRE
Does this mean, what i think it does? :shock:
dracflamloc
Addict
Addict
Posts: 1648
Joined: Mon Sep 20, 2004 3:52 pm
Contact:

Post by dracflamloc »

I think its a good idea to keep ogre. It does have better performance and is more in style with the way PB does things. I do think a choice would be good thouhg =)
Berikco
Administrator
Administrator
Posts: 1326
Joined: Wed Apr 23, 2003 7:57 pm
Location: Belgium
Contact:

Post by Berikco »

Num3 wrote:
Fred wrote:We won't drop OGRE
Does this mean, what i think it does? :shock:
Do it yourself...use the force luke3

:lol:
Dare2
Moderator
Moderator
Posts: 3321
Joined: Sat Dec 27, 2003 3:55 am
Location: Great Southern Land

Post by Dare2 »

:lol:
@}--`--,-- A rose by any other name ..
mskuma
Enthusiast
Enthusiast
Posts: 573
Joined: Sat Dec 03, 2005 1:31 am
Location: Australia

Re: Irrlich (Again and Again)

Post by mskuma »

Num3 wrote:Irrlich is a free 3d Engine for windows
<snip>
a) Fred drop's Ogre for good and get's Irrlich using DX8
b) We make a community efford to recode the freebasic stuff to Pure
How about this ColdSteel library which according to its site "ColdSteel uses IrrLicht for graphics rendering"? I think there's been some comments floating around suggesting it can work with PB. [edit: just checked the ColdSteel site - "ColdSteel SDK Early Adopter: .. it comes with the needed files for use with .. PureBasic". OK I just downloaded it, and tried it - there is an interface provided but it's for 3.94 and seems to have some issues under v4 - the interface would need some updating.. BTW I'm not affiliated with ColdSteel - I'm just in the middle of trying to evaluate 3D engines/languages].

I'm interested to hear how Irrlich compares with 3impact (another apparently high-rated 3D engine/library) but as yet no apparent wrapper for PB, but possible with some effort since it's a DLL.
--
Registered PB user
dracflamloc
Addict
Addict
Posts: 1648
Joined: Mon Sep 20, 2004 3:52 pm
Contact:

Post by dracflamloc »

The fact that COldSteel is not free and is using Irrlicht kinda makes me stay away. It'd be way more beneficial to have an open wrapper for an open engine.
Sebe
Enthusiast
Enthusiast
Posts: 160
Joined: Sun Dec 19, 2004 10:55 pm
Location: Munich
Contact:

Post by Sebe »

The fact that COldSteel is not free and is using Irrlicht kinda makes me stay away. It'd be way more beneficial to have an open wrapper for an open engine.
ColdSteel is not just a wrapper for Irrlicht. There is a difference between "wrapping funktions inside a library" and "building your own stuff on top of a library"... Network, audio, physics, etc. are coming to ColdSteel. Also Jedive is building special editors for the ColdSteel engine (almost all editors are finished afaik). If you want a simple and free wrapper for Irrlicht, then create one by yourself. If you want an game engine then ColdSteel is worth to take a look at. There's a demo of the SDK that can be used with the latest stable PureBasic release (3.94). You should try that out. Read -> think -> post. Not the other way around :wink:
dracflamloc
Addict
Addict
Posts: 1648
Joined: Mon Sep 20, 2004 3:52 pm
Contact:

Post by dracflamloc »

Umm... I didnt say it was "just" a wrapper... but I have a feeling those "coming features" are going to be through SDL and ODE or something.

Don't tell me to read->think->post. I know exactly what Coldsteel is and I did try out the demo. Maybe you should take your own advice

That said I don't really have anything against the ColdSteel authors. I do think that an open source engine deserves to have the interfaces for it open as well.
Sebe
Enthusiast
Enthusiast
Posts: 160
Joined: Sun Dec 19, 2004 10:55 pm
Location: Munich
Contact:

Post by Sebe »

I don't think so if the author of the interface has put a huge effort to add his own entity system into the engine (and more stuff). There's much more going on behind the scenes of ColdSteel than just Irrlicht. But if you don't want to use it: fine by me :wink: Don't want this to be a flamewar or some... :)

P.S.: Physics will be Newton, not ODE.
jack
Addict
Addict
Posts: 1358
Joined: Fri Apr 25, 2003 11:10 pm

Post by jack »

rufio72 already has done some work with irrlicht, so why not contact him and see if he wants to make it community project?
dracflamloc
Addict
Addict
Posts: 1648
Joined: Mon Sep 20, 2004 3:52 pm
Contact:

Post by dracflamloc »

I've recently begun looking into the yake framework which looks very cool:

yake.org
User avatar
Progi1984
Addict
Addict
Posts: 806
Joined: Fri Feb 25, 2005 1:01 am
Location: France > Rennes
Contact:

Post by Progi1984 »

I work a little on it with the first example.

I have a problem and i call help you !

My result :

Code: Select all

 Enumeration 
   #IRRDLL
 EndEnumeration
 If OpenLibrary(#IRRDLL, "IRRlichtWrapper.dll")
  If ExamineLibraryFunctions(#IRRDLL)
    i=0
    While NextLibraryFunction()
      func$ = LibraryFunctionName()
      Debug Str(i)+"-"+func$
      i+1    
    Wend 
  EndIf
EndIf

Procedure IRRStart(  device_type.l,  iwidth.l,  iheight.l,  fullscreen.l,  use_shadows.l,  iCaptureMouse.l)
  *F = GetFunction(#IRRDLL, "IRRStart")
  If *F
    res=CallFunctionFast(*F,device_type.l,  iwidth.l,  iheight.l,  fullscreen.l,  use_shadows.l,  iCaptureMouse.l)
  EndIf
  ProcedureReturn res
EndProcedure
Procedure IrrSetWindowCaption(text.s)
  *F = GetFunction(#IRRDLL, "IrrSetWindowCaption")
  If *F
    res=CallFunctionFast(*F,text.s)
  EndIf
  ProcedureReturn res
EndProcedure
Procedure IrrAddStaticText(text.s,TopX.l,TopY.l,BotX.l,BotY.l,border.l,wordwrap.l)
  *F = GetFunction(#IRRDLL, "IrrAddStaticText")
  If *F
    res=CallFunctionFast(*F,text.s,TopX.l,TopY.l,BotX.l,BotY.l,border.l,wordwrap.l)
  EndIf
  ProcedureReturn res
EndProcedure
Procedure IrrRunning()
  *F = GetFunction(#IRRDLL, "IrrRunning")
  If *F
    res=CallFunctionFast(*F)
  EndIf
  ProcedureReturn res
EndProcedure
Procedure IrrBeginScene(red.l,green.l,blue.l)
  *F = GetFunction(#IRRDLL, "IrrBeginScene")
  If *F
    res=CallFunctionFast(*F,red.l,green.l,blue.l)
  EndIf
  ProcedureReturn res
EndProcedure
Procedure IrrDrawGUI()
  *F = GetFunction(#IRRDLL, "IrrDrawGUI")
  If *F
    res=CallFunctionFast(*F)
  EndIf
  ProcedureReturn res
EndProcedure
Procedure IrrEndScene()
  *F = GetFunction(#IRRDLL, "IrrEndScene")
  If *F
    res=CallFunctionFast(*F)
  EndIf
  ProcedureReturn res
EndProcedure
Procedure IrrStop()
  *F = GetFunction(#IRRDLL, "IrrStop")
  If *F
    res=CallFunctionFast(*F)
  EndIf
  ProcedureReturn res
EndProcedure

;  Procedure IrrSetWindowCaption(text.s)
;   ProcedureReturn CallFunction(#IRRDLL, "IrrSetWindowCaption",text.s)
; EndProcedure
; Procedure IrrAddStaticText(text.s,TopX.l,TopY.l,BotX.l,BotY.l,border.l,wordwrap.l)
;   ProcedureReturn CallFunction(#IRRDLL, "IrrAddStaticText",text.s,TopX.l,TopY.l,BotX.l,BotY.l,border.l,wordwrap.l)
; EndProcedure
; Procedure IrrRunning()
;   ProcedureReturn CallFunction(#IRRDLL, "IrrRunning")
; EndProcedure
; Procedure IrrBeginScene(red.l,green.l,blue.l)
;   ProcedureReturn CallFunction(#IRRDLL, "IrrBeginScene",red.l,green.l,blue.l)
; EndProcedure
; Procedure IrrDrawGUI()
;   ProcedureReturn CallFunction(#IRRDLL, "IrrDrawGUI")
; EndProcedure
; Procedure IrrEndScene()
;   ProcedureReturn CallFunction(#IRRDLL, "IrrEndScene")
; EndProcedure
; Procedure IrrStop()
;   ProcedureReturn CallFunction(#IRRDLL, "IrrStop")
; EndProcedure
  
 
  
Enumeration 0
    #IRR_EDT_NULL; = 0            ' a NULL device with no display
    #IRR_EDT_SOFTWARE;            ' #IRRlichts default software renderer
    #IRR_EDT_SOFTWARE2;           ' An improved quality software renderer
    #IRR_EDT_OPENGL    ;          ' hardware accelerated OpenGL renderer
    #IRR_EDT_DIRECT3D8  ;         ' hardware accelerated DirectX 8 renderer
    #IRR_EDT_DIRECT3D9   ;        ' hardware accelerated DirectX 9 renderer
EndEnumeration
Enumeration 0;IRR_MATERIAL_FLAGS
    #IRR_EMF_WIREFRAME ;= 0       ; render as wireframe outline
    #IRR_EMF_GOURAUD_SHADING     ; render smoothly across polygons
    #IRR_EMF_LIGHTING            ; material is effected by lighting
    #IRR_EMF_ZBUFFER             ; enable z buffer
    #IRR_EMF_ZWRITE_ENABLE       ; can write as well as read z buffer
    #IRR_EMF_BACK_FACE_CULLING   ; cull polygons facing away
    #IRR_EMF_BILINEAR_FILTER     ; enable bilinear filtering
    #IRR_EMF_TRILINEAR_FILTER    ; enable trilinear filtering
    #IRR_EMF_ANISOTROPIC_FILTER  ; reduce blur in distant textures
    #IRR_EMF_FOG_ENABLE          ; enable fogging in the distance
    #IRR_EMF_NORMALIZE_NORMALS   ; use when scaling dynamically lighted models
EndEnumeration

; Material Types
Enumeration 0;IRR_MATERIAL_TYPES
    #IRR_EMT_SOLID; = 0           ; Standard solid rendering uses one texture
    #IRR_EMT_SOLID_2_LAYER       ; 2 blended textures (not available on OpenGL)
    #IRR_EMT_LIGHTMAP            ; 2 textures: 0=color 1=lighting level
    #IRR_EMT_LIGHTMAP_ADD        ; ... as above but adds levels
    #IRR_EMT_LIGHTMAP_M2         ; ... as above but multiplies levels by 2
    #IRR_EMT_LIGHTMAP_M4
    #IRR_EMT_LIGHTMAP_LIGHTING   ; ... as above with dynamic lighting
    #IRR_EMT_LIGHTMAP_LIGHTING_M2
    #IRR_EMT_LIGHTMAP_LIGHTING_M4 
    #IRR_EMT_DETAIL_MAP          ; 2 textures blended one can be scaled
    #IRR_EMT_SPHERE_MAP
    #IRR_EMT_REFLECTION_2_LAYER
    #IRR_EMT_TRANSPARENT_ADD_COLOR
    #IRR_EMT_TRANSPARENT_ALPHA_CHANNEL
    #IRR_EMT_TRANSPARENT_ALPHA_CHANNEL_REF
    #IRR_EMT_TRANSPARENT_VERTEX_ALPHA
    #IRR_EMT_TRANSPARENT_REFLECTION_2_LAYER
    #IRR_EMT_NORMAL_MAP_SOLID
    #IRR_EMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR
    #IRR_EMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA
    #IRR_EMT_PARALLAX_MAP_SOLID
    #IRR_EMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR
    #IRR_EMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA
    #IRR_EMT_FORCE_32BIT ;= &h7fffffff
EndEnumeration

; Mouse events
Enumeration 0;IRR_MOUSE_EVENTS
    #IRR_EMIE_LMOUSE_PRESSED_DOWN; = 0
    #IRR_EMIE_RMOUSE_PRESSED_DOWN
    #IRR_EMIE_MMOUSE_PRESSED_DOWN
    #IRR_EMIE_LMOUSE_LEFT_UP
    #IRR_EMIE_RMOUSE_LEFT_UP
    #IRR_EMIE_MMOUSE_LEFT_UP
    #IRR_EMIE_MOUSE_MOVED
    #IRR_EMIE_MOUSE_WHEEL
EndEnumeration

; MD2 Animation sequences
Enumeration 0;IRR_MD2_ANIM_SEQUENCES
    #IRR_EMAT_STAND ;= 0
    #IRR_EMAT_RUN
    #IRR_EMAT_ATTACK
    #IRR_EMAT_PAIN_A
    #IRR_EMAT_PAIN_B
    #IRR_EMAT_PAIN_C
    #IRR_EMAT_JUMP
    #IRR_EMAT_FLIP
    #IRR_EMAT_SALUTE
    #IRR_EMAT_FALLBACK
    #IRR_EMAT_WAVE
    #IRR_EMAT_POINT
    #IRR_EMAT_CROUCH_STAND
    #IRR_EMAT_CROUCH_WALK
    #IRR_EMAT_CROUCH_ATTACK
    #IRR_EMAT_CROUCH_PAIN
    #IRR_EMAT_CROUCH_DEATH
    #IRR_EMAT_DEATH_FALLBACK
    #IRR_EMAT_DEATH_FALLFORWARD
    #IRR_EMAT_DEATH_FALLBACKSLOW
    #IRR_EMAT_BOOM
EndEnumeration
;{
#IRR_OFF=0
#IRR_ON=1

; Input definitions
#IRR_KEY_UP=0
#IRR_KEY_DOWN=1

; System Device definitions
#IRR_WINDOWED=0
#IRR_FULLSCREEN=1

#IRR_NO_SHADOWS=0
#IRR_SHADOWS=1

#IRR_IGNORE_EVENTS=0
#IRR_CAPTURE_EVENTS=1

#IRR_LINEAR_FOG=0
#IRR_EXPONENTIAL_FOG=1

; Filing system definitions
#IRR_USE_CASE=0
#IRR_IGNORE_CASE=1
#IRR_USE_PATHS=0
#IRR_IGNORE_PATHS=1

; 2D image definitions
#IRR_IGNORE_ALPHA=0
#IRR_USE_ALPHA=1

; Node definitions
#IRR_INVISIBLE=0
#IRR_VISIBLE=1

#IRR_ONE_SHOT=0
#IRR_LOOP=1

; Particle definitions
#IRR_NO_EMITTER=0
#IRR_DEFAULT_EMITTER=1

; GUI Interface definitions
#IRR_GUI_NO_BORDER=0
#IRR_GUI_BORDER=1
#IRR_GUI_NO_WRAP=0
#IRR_GUI_WRAP=1
;}

IRRStart( #IRR_EDT_OPENGL, 400, 200, #IRR_WINDOWED, #IRR_NO_SHADOWS, #IRR_IGNORE_EVENTS )

; Set the title of the display
IRRSetWindowCaption( "Example 01: Hello World - The GUI" )

; add a static text object to the graphical user interface, at the moment
; this is the only interface object we support. The text will be drawn inside
; the defined rectangle, the box will not have a border and the text will not
; be wrapped around if it runs off the end
IRRAddStaticText( "Hello World", 4,0,200,16, #IRR_GUI_NO_BORDER, #IRR_GUI_NO_WRAP )

; while the scene is still running
Repeat 
    ; begin the scene, erasing the canvas to white before rendering
    IRRBeginScene( 255,255,255 )

    ; draw the Graphical User Interface
    IRRDrawGUI()

    ; end drawing the scene and render it
    IRREndScene()
Until IRRRunning()

; -----------------------------------------------------------------------------
; Stop the #IRRlicht engine and release resources
IRRStop()
DarkDragon
Addict
Addict
Posts: 2347
Joined: Mon Jun 02, 2003 9:16 am
Location: Germany
Contact:

Post by DarkDragon »

Irrlicht, none can spell it correctly, expect Germans(like me) it means fen fire or ghost light or will-o'-the-wisp or will-o'-wisp (dict.leo.org helps)
bye,
Daniel
Post Reply