<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Λοιπά θέματα</title><link>https://www.dotnetzone.gr:443/cs/forums/29/ShowForum.aspx</link><description>Οτιδήποτε άλλα θέματα developing που δεν κολλάνε σε κάποιο από τα υπόλοιπα forums!</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>IrrLicht 3D Game Engine,- A review (by me :P )</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/32683.aspx</link><pubDate>Thu, 07 Jun 2007 03:19:25 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:32683</guid><dc:creator>PsySpooky</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/32683.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=29&amp;PostID=32683</wfw:commentRss><description>H IrrLicht Engine είναι μια engine 3d γραφικών , &lt;br&gt;είναι open source και έχει γραφτεί αποκλιστικά σε C++.&lt;br&gt;To κυριότερο είναι open source και cross platform :).&lt;br&gt;&lt;br&gt;Υποστιρίζει&lt;br&gt;&lt;ul&gt;&lt;li&gt;Direct3D (εκδόσεις 8.1 κ9.0)&lt;/li&gt;&lt;li&gt;OpenGL(έκδοση 2.0)&lt;/li&gt;&lt;li&gt;IrrLicht Engine software renderer&lt;/li&gt;&lt;li&gt;Apfelbaum Software Renderer&lt;/li&gt;&lt;li&gt;null device&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;καιii απο πλατφόρμες.. χαχα τι να πρωτογράψω :) :&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Windows 98, ME, NT 4, 2000, XP, XP64&lt;/li&gt;&lt;li&gt;Linux&lt;/li&gt;&lt;li&gt;MacOS&lt;/li&gt;&lt;li&gt;Sun Solaris/SPARC&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;br&gt;Υποστιρίζει επείσης textures όπως:&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Adobe Photoshop (.psd)&lt;/li&gt;&lt;li&gt;JPEG File Interchange Format (.jpg)&lt;/li&gt;&lt;li&gt;Portable Network Graphics (.png)&lt;/li&gt;&lt;li&gt;Truevision Targa (.tga)&lt;/li&gt;&lt;li&gt;Windows Bitmap (.bmp)&lt;/li&gt;&lt;li&gt;Zsoft Paintbrush (.pcx)&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;br&gt;και mesh αρχεία όπως:&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;3D Studio meshes (.3ds)&lt;/li&gt;&lt;li&gt;B3D files (.b3d)&lt;/li&gt;&lt;li&gt;Alias Wavefront Maya (.obj)&lt;/li&gt;&lt;li&gt;Cartography shop 4 (.csm)&lt;/li&gt;&lt;li&gt;COLLADA (.xml, .dae)&lt;/li&gt;&lt;li&gt;DeleD (.dmf)&lt;/li&gt;&lt;li&gt;FSRad oct (.oct)&lt;/li&gt;&lt;li&gt;Irrlicht scenes (.irr)**&lt;/li&gt;&lt;li&gt;Microsoft DirectX (.x) (binary &amp;amp; text)&lt;/li&gt;&lt;li&gt;Milkshape (.ms3d)&lt;/li&gt;&lt;li&gt;My3DTools 3 (.my3D)&lt;/li&gt;&lt;li&gt;OGRE meshes (.mesh)&lt;/li&gt;&lt;li&gt;Pulsar LMTools (.lmts)&lt;/li&gt;&lt;li&gt;Quake 3 levels (.bsp)&lt;/li&gt;&lt;li&gt;Quake 2 models (.md2)&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Και αφού σας έδειξα τις ιδιότιτες της IrrLicht, ώρα για ένα απλό παράδηγμα hello world!&lt;br&gt;&lt;br&gt;&lt;br&gt;στην περίπτωση μου ,γράφω με visual c++ 2005,&lt;br&gt;αλλά μπορείτε να γράψετε και εσείς με την IrrLicht χρισιμοποιώντας ό,τι IDE προτιμάτε,&lt;br&gt;αρκή να το ρυθμίσετε να δουλεύει με την IrrLicht.&lt;br&gt;&lt;br&gt;&lt;br&gt;Ηello World! παράδειγμα:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Green;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;//αρχικά κάνουμε include την IrrLicht.&lt;/span&gt;&lt;br&gt;#include &amp;lt;irrlicht.h&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Η IrrLicht έχει 5name spaces:&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;namespace&lt;/span&gt; core;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;namespace&lt;/span&gt; scene;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;namespace&lt;/span&gt; video;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;namespace&lt;/span&gt; io;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;namespace&lt;/span&gt; gui;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;αλλά με ένα μόνο namespace περιλαμβάνουμε στο πρόγραμμα τα υπόλοιπα 5.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Green;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;//to namespace pou perilamvanei ola ta alla 5&lt;/span&gt;&lt;br&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;using&lt;/span&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;namespace&lt;/span&gt; irr;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;linking στην library της IrrLicht.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;#pragma&lt;/span&gt; comment(lib, &lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Irrlicht.lib"&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;αρχή&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt; main()&lt;br&gt;{&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;br&gt;τώρα, για να δημιουργίσουμε την engine χρισιμοποιούμε την μέθοδο 'createDevice()' η οποία έχει 7παράμετρους:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;deviceType: ο τύπος συσκευών, μπορεί να είναι Null, software engine, Direct3D 9, Direct3D 8 ή OpenGL&lt;/li&gt;&lt;li&gt;στο παράδηγμα θα χρισιμοποιήσω Direct3D 9, δηλαδή θα το δηλώσω με EDT_DIRECT3D, μπορείτε να χρισιμοποιήσετε ό,τι άλλο θέλετε π.χ&lt;/li&gt;&lt;li&gt;EDT_SOFTWARE, EDT_NULL, EDT_DIRECT3D9, EDT_DIRECT3D8, EDT_OPENGL.&lt;/li&gt;&lt;li&gt;windowSize: το μέγεθος του παραθήρου.. στο παράδηγμα θα χρισιμοποιήσω 640x480&lt;/li&gt;&lt;li&gt;bits: αριθμός bits όταν το πρόγραμμα/παιχνίδι τρέχει σε full screen.. η παράμετρος θα είναι 16 ή 32αν το πρόγραμμα παιχνίδι δεν τρέχει σε full screen η παράμετρος bits αγνοήτε.&lt;/li&gt;&lt;li&gt;fullscreen: true για να τρέχει το πρόγραμμα σε full screen, false για το αντίθετο...&lt;/li&gt;&lt;li&gt;sencilbuffer: Specifies if we want to use the stencil buffer for drawing shadows. (auto einai copy paste:P)&lt;/li&gt;&lt;li&gt;vsync: Specifies if we want to have vsync enabled. This is only useful in full screen mode.( ka auto copy paste einai! :P :P)&lt;/li&gt;&lt;li&gt;eventReceiver: An object to receive events. We do not want to use this parameter here, and set it to 0.(dyskoli i metafrasei re paidia.... :) )&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;γράφουμε το όνομα που θέλουμε να έχει το παράθυρο μας π.χ:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;device-&amp;gt;setWindowCaption(L&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Hello World! - Irrlicht Engine Demo"&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;καλούμε το video driver, scene manager και το gui enviroment&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;IVideoDriver* driver &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; device-&amp;gt;getVideoDriver();&lt;br&gt;ISceneManager* smgr &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; device-&amp;gt;getSceneManager();&lt;br&gt;IGUIEnvironment* guienv &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; device-&amp;gt;getGUIEnvironment();&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;βάζουμε κείμενο στο στην πάνο αριστερή γωνία του προγράμματος και στην κάτω δεξιά.&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;guienv-&amp;gt;addStaticText(L&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"Hello World! This is the Irrlicht Software engine!"&lt;/span&gt;,&lt;br&gt;     rect&amp;lt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt;&amp;gt;(10,10,200,22), &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;true&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;τώρα φορτόνουμε κάτι ενδιαφέρον στο πρόγραμμα, π.χ ένα αρχείο mesh Quake 2 (.md2)&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;IAnimatedMesh* mesh &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; smgr-&amp;gt;getMesh(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"../../media/sydney.md2"&lt;/span&gt;);&lt;br&gt;IAnimatedMeshSceneNode* node &lt;span style="color:Red;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;=&lt;/span&gt; smgr-&amp;gt;addAnimatedMeshSceneNode( mesh );&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;τώρα βάζουμε την παράμετρο του φώς σε false γιατί δεν έχουμε δυναμικό φώς στην σκηνή και το mesh αρχείο θα φένετε τελείως μαύρο.&lt;br&gt;βάζουμε επείσης το animation να τρέχει 0-310 fps.&lt;br&gt;και τελικά φορτόνουμε το texture του.&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;if&lt;/span&gt; (node)&lt;br&gt;{&lt;br&gt;    node-&amp;gt;setMaterialFlag(EMF_LIGHTING, &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;false&lt;/span&gt;);&lt;br&gt;    node-&amp;gt;setFrameLoop(0, 310);    &lt;br&gt;    node-&amp;gt;setMaterialTexture( 0, driver-&amp;gt;getTexture(&lt;span style="font-family:Courier New;font-size:11px;font-weight:normal;"&gt;"../../media/sydney.bmp"&lt;/span&gt;) );&lt;br&gt;}&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;τώρα για να βλέπουμε την σκηνή βάζουμε μια κάμερα στη θέση (0, 10, -40).&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;smgr-&amp;gt;addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));&lt;/span&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;ok τώρα που τα σετάραμε όλα ας τα εμφανίσουμε στην οθόνη!&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;while&lt;/span&gt;(device-&amp;gt;run())&lt;br&gt;{&lt;br&gt;    driver-&amp;gt;beginScene(&lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;true&lt;/span&gt;, &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;true&lt;/span&gt;, SColor(255,100,101,140));&lt;br&gt;&lt;br&gt;    smgr-&amp;gt;drawAll();&lt;br&gt;    guienv-&amp;gt;drawAll();&lt;br&gt;&lt;br&gt;    driver-&amp;gt;endScene();&lt;br&gt;}&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;και τέλος κλείνουμε το πρόγραμμα ρίχνοντας την μηχανή για έξοδο.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style="color:Black;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;    device-&amp;gt;drop();&lt;br&gt; &lt;span style="color:Blue;background-color:transparent;font-family:Courier New;font-size:11px;font-weight:normal;"&gt;return&lt;/span&gt; 0;&lt;br&gt;}&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;.&lt;br&gt;Eλπίζω το άρθρο να σας φανεί ενδιαφέρον αν όχι εκπαιδευτικό :P.&lt;br&gt;Ξεκίνησα να δουλεύω με την ΙrrLicht πριν λίγες μέρες, αφότου πείρα ένα mail που με ήθελε κάπιος να μπώ στο project του για ένα 3D παιχνίδι...&lt;br&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Αρθρογραφία :P&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://irrlicht.sourceforge.net/"&gt;IrrLicht Homepage&lt;/a&gt;&lt;br&gt;και τα λίγα πράγματα που ξέρω έγω πάνω στην IrrLicht&lt;br&gt;&lt;br&gt;p.s αυτό το άρθρο το έγραψα εγώ και το έστειλα για δημοσίευση στον κατάλογο άρθρα στο www.coder.gr&lt;br&gt;κάποιοι απο εσάς πιθανόν να είστε και στο coder.gr μέλος.&lt;br&gt;απλά το σιμιώνω για να μην ακουστεί οτι δεν είμαι ο συγραφέας του άρθρου :P&lt;br&gt;&lt;br&gt;p.s2&amp;nbsp; αυτό είναι το πρώτο μου άρθρο.. για αυτό respect :) &lt;br&gt;&lt;br&gt;</description></item></channel></rss>