Started IrrilichtBB

Blitz3D Forums/Blitz3D Userlibs/Started IrrilichtBB

Erroneouss(Posted 2005) [#1]
Hello all,

Just thought I'd post about it! I recently started IrrilichtBB about 2 days ago.

IrrilichtBB is a wrapper for the Irrilicht Software Rendering Engine in C++ to Blitz. I currently know it works for Blitz3D and I am looking for people with BlitzPlus to see if it works for it too. :) Gimme a hollar if you want to help.

Here is a screenshot so far.

Large View


The command set looks like this so far. I am trying to keep some of the Irrilicht names of the commands, while also adding the simplicity of the Blitz Commands.
Irr_BeginScene%(ClearBackBuffer%,ClearZBuffer%,irr_Color)
Irr_CreateDevice%(Width%,Height%,Depth%,Fullscreen%,Stencil%,VSync%)
Irr_ShadowsColors%(irr_Color%)
Irr_AppTitle%(title$)
Irr_ShowPointer%()
Irr_HidePointer%()
Irr_IsRunning%()
Irr_DestroyDevice%()
Irr_EndScene%()
Irr_RenderWorld%()
Irr_GetFPS%()
Irr_CreateFPSCamera%()
Irr_LoadMesh%(filename$)
Irr_CreateNode%(mesh%)
Irr_PositionNode%(node%,x#,y#,z#)
Irr_SetAnimationSpeed(node%,framesPerSecond%)
Irr_entitytexture%(node%,filename$)
Irr_SetAnimationLoop%(node%,firstframe%,lastframe%)


The link for the Worklog is located here:
http://www.blitzbasic.com/logs/userlog.php?user=7716&log=445


jfk EO-11110(Posted 2005) [#2]
Very nice Idea since Blitz3D was always limited to hardware 3D (although these days a machine without hardware 3D is usually pretty old and slow anyway, nevertheless, a nice project).

This could be used for some kind of Blitz Reducted Instruction Set Convention (BRISC) that allows only the Blitz3D Commands that have a counterpart in Irrlicht, so you can compile the source for both, soft and hardware rendering.


MikeHart(Posted 2005) [#3]
This is the second or third wrapper for Irrlicht I heard off.


Erroneouss(Posted 2005) [#4]
The only ones I know of are:
-Sweenie's Wrapper - Mostly for BMax
-My Wrapper - For B3D or B+ (Maybe B+..still need testing)


Picklesworth(Posted 2005) [#5]
I just realized how powerful Irrilicht is :)

Good luck with that!
I can test/make examples (yes, I actually can make demo programs. Just never try)/whatever if you ever want help...


Clarks(Posted 2005) [#6]
i can help with that if you need help but only if the internals are done good. i would surely like to see those underscores removed.


Erroneouss(Posted 2005) [#7]
Mr. Picklesworth: //

Clarks: Thanks! Here is a decls file you can replace yours with. No underscores. :)

;Irrilicht BB Decls File for The Blitz3D Development Package;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;_________
;;;;;;;;;;;;;;;;;;;;;;;\__   ___\ \------\  \------\
;IrrilichtBB Library  ;   \  \      \ \\  \   \ \\  \      I             B             B  
;By TheDuck           ;    \  \      \    \    \    \  IrrilichtBB - The Ultimate 3D Software Rendering Engine Wrapper
;Duck Enterprises 2005;  ___\  \___   \ \\  \   \ \\  \      Using DevC++ and The Irrilicht Engine
.lib "irrilichtbb.dll";  \_________\  \_____/   \_____/     D U C K  E N T E R P R I S E S  2 0 0 5
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                                ;;           ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  ;;;;
;;Current Version of IrilichtBB: v.0.1a;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;;                 ;;
   ;;                 ;;;;
   ;;                     ;;
    ;;              ;;;;;;;;;;;;;;;;;;;;;
     ;;             ;Using Irrilicht 0.8;
      ;;            ;;;;;;;;;;;;;;;;;;;;;
       ;;
       ;;     ;;;;;;;;;;;;;;;;;;;;;;;
       ;;;;;;;;Compiled Under DevC++;
       ;;     ;;;;;;;;;;;;;;;;;;;;;;;
      ;;
;;;;;;;;;;;;;;;;;;;;;;
;Using DevC++ 4.9.9.2;
;;;;;;;;;;;;;;;;;;;;;;

;Irrilicht Begin/Init/Setup Functions
IrrBeginScene%(ClearBackBuffer%,ClearZBuffer%,IrrColor):"BeginScene@12"
IrrCreateDevice%(Width%,Height%,Depth%,Fullscreen%,Stencil%,VSync%):"CreateDevice@24"
IrrShadowsColors%(IrrColor%):"ShadowColors@4"
IrrAppTitle%(title$):"WindowTitle@4"
;
;Irrilicht Mouse Functions
IrrShowPointer%():"ShowMouseCursor@0"
IrrHidePointer%():"HideMouseCursor@0"
;
;Irrilicht Runtime Functions
IrrIsRunning%():"IsRunning@0"
;
;Irrilicht Killing Functions
IrrDestroyDevice%():"DropDevice@0"
IrrEndScene%():"EndScene@0"
;
;Irrilicht Drawing/Rendering Functions
IrrRenderWorld%():"drawAll3d@0"
;
;Irrilicht Misc Functions
IrrGetFPS%():"GetFramesPerSecond@0"
;
;Irrilicht Camera Functions
IrrCreateFPSCamera%():"AddFPSControls@0"
IrrCreateCamera%(x#,y#,z#,pointAtx#,pointAty#,pointAtz#):"CreateCamera@24" 
;
;Irrilicht Mesh Functions
IrrLoadMesh%(filename$):"Load3DMesh@4"
IrrCreateNode%(mesh%):"addnodeformesh@4"
IrrPositionNode%(node%,x#,y#,z#):"setmeshnodeposition@16"
IrrSetAnimationSpeed(node%,framesPerSecond%):"SetAnimationSpeed@8"
Irrentitytexture%(node%,filename$):"SetTexture@8"
IrrSetAnimationLoop%(node%,firstframe%,lastframe%):"SetFrameLoop@12"
IrrSetNodeRotation%(node%,x%,y%,z%):"Irr_SetNodeRotation@16"
;
;Irrilicht Archive Files Adding
IrrAddArchive%(filename$):"AddArchive@4"
;
;Irrilicht Particles
IrrCreateParticle%(x#,y#,z#,scaleEmitterx#,scaleEmittery#,scaleEmitterz#,particleSizeX#,particleSizeY#,filename$,directionX#,directiony#,directionz#):"createparticle@48"
;
;Irrilicht Lights
IrrCreateLight%(red%,green%,blue%,radius#):"createlightnode@16"




Sweenie(Posted 2005) [#8]
I will probably sound like a besserwisser but it's spelled Irrlicht not Irrilicht. :)


Damien Sturdy(Posted 2005) [#9]
Excelent work, TheDuck. Will you be wrapping its UI?

If it would be possible to use it on top of blitz' DX instance, it could have some amazing uses other than its already amazing rendering :)


Erroneouss(Posted 2005) [#10]
>> " I will probably sound like a besserwisser but it's spelled Irrlicht not Irrilicht. :)"
Lol... I know; I noticed that after I posted every thing about it everywhere :P

Cygnus: Wrapping UI = Yes! (Most likely) ^-^
And I'm not sure I understand your 2nd comment. Like make the Irrlicht stuff in the Blitz window and make it move using MoveEntity (ect)?


Clarks(Posted 2005) [#11]
Actually to replace DX in a blitz window requires the handle of the window but irrlicht creates its own window. So the only way is if irr can use the blitz window hwnd.


Erroneouss(Posted 2005) [#12]
Yeah - :'(
I was wondering if there is any engine that doesn't make a new
window, and so far no luck. :(


Picklesworth(Posted 2005) [#13]
Couldn't you force the Irrlicht window inside the Blitz window via blitz?

If that's what's needed, I could deal with that in a matter of minutes :)


Clarks(Posted 2005) [#14]
mr. picklesworth-> hmmm, how would you do that.

the duck-> what exactly do you need help with.


Erroneouss(Posted 2005) [#15]
Mr. Picklesworth: From your thingie a couple weeks back of putting the Blitz window in any other window? 0.o That'd be pretty cool! And it would take away all of the needed key pressing functions wrapping!

Clarks: Uhmmmm... What? I didn't say I needed help on
anything. Just said I was sad that I couldn't control Irrlicht
in the Blitz window, and thats actually what I wanted in the
first place. :'( Oh well... Good enough for me! ...Wait, I'm confused!!!

And for all you people asking for me to wrap OGRE, I might give it a try, but it needs about 20 dlls (!!!) to be distributed with it! :P I might give it a go though. (If I can find the stupid stuff that makes it work with DevC++!! :/)


Damien Sturdy(Posted 2005) [#16]
to replace DX in a blitz window requires the handle of the window


I'm not a DX Programmer, but if thats all thats required, then, well, WOW. thats even easier. I will have to learn one day!


Picklesworth(Posted 2005) [#17]
Okay, I can set up a simple embedder for the Irrlicht window.
I'll just need a way of retrieving the Irrlicht window handle using the dll though... And a function contained in a .bb include. Good thing is, the embedding process would be totally optional.

Or actually, I suppose an alternative could be that the wrapper could retrieve the blitz window handle and embed itself in the blitz window. That would still require a bit of extra work on the user's end though.