Updated Articles
[sdlgit/SDL-Site.git] / pages / blog-0010.html-inc
index 5d372f6..21af3c6 100644 (file)
@@ -1,6 +1,38 @@
 <div class="blog">
 <h1 id="NAME">
-Design of SDL::Rect
+Perl+SDL 3D Rendering
 </h1>
 <div class="CONTENT">
-<div style="text-align: right;"><i><br />you say things,<br />I hear,<br />but don't listen,<br /><br />you show things,<br />I see,<br />but don't understand,<br /><br />you write things,<br />I read,<br />but don't know.<br /></i></div><br />Lately we have been working on cleaning up the XS name spaces of SDL perl. After some bumps and falls we came up with a separated Rect module. Rect is one of the most simple C struct as shown below. <br /><br /><script src="http://gist.github.com/185940.js"></script><br /><br />Using the awesome <a href="http://cpansearch.perl.org/src/DMR/CookBookB-19960430/perlobject.map">perlobject.map</a> as a reference I was able to create a <a href="http://github.com/kthakore/SDL_perl/blob/a1b835c168ec184abc01edbc01862ffa15624c26/lib/SDL/Rect.pm">blessed perl</a> object in <a href="http://github.com/kthakore/SDL_perl/blob/a1b835c168ec184abc01edbc01862ffa15624c26/src/Rect.xs">XS</a>. So now SDL::Rect-&gt;new(...) gave us a blessed reference ready to go. And as an icing it would destroy itself properly no matter where it was used. But once I brought it into our existing code base, garu pointed out the extending it was a little bit of a mess. So far to extend Rect we have to something like below. Any comment or advice would be much appreciated.<br /><br /><br /><script src="http://gist.github.com/185938.js"></script><br /><br /><br />Have at it I am a big boy. You can grab the code like this.<br />Only If you don't already have a local git repo:<br /><br /><blockquote>mkdir SDL<br />cd SDL<br />git init .</blockquote><br />Then do this or skip to this if you already have a local git repo<br /><blockquote>git pull git://github.com/kthakore/SDL_perl.git experimental</blockquote><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3102167581424744259-3340771783563950133?l=yapgh.blogspot.com'/></div></div></div>
\ No newline at end of file
+<i>Recently we have done a lot of work on the next release of SDL Perl. But it all pays off when I see users do cool things as one of the users has done below. Talon^++! This project is a great example for people wanting to learn 3D from scratch. </i><br />
+<br />
+<i>--yapgh</i><br />
+<br />
+<hr />This was a project to test how well Perl+SDL performs and does not use OpenGL at all. This is all perl and SDL, with the help of libsdl_gfx for SDL::GFX::Primitives. Texture mapping doesn't use SDL::GFX::Primitives because textured_polygon just takes a surface, tiles it, and clips out the polygon, which doesn't look 3D at all.<br />
+<br />
+Below are some screen shots of this little toy in action. If you'd like to try it yourself, you can download the entire project <a href="http://sdlperl.ath.cx/releases/texmap.tgz">here</a>. You can rotate the objects with the mouse, or keyboard arrows. Also press shift to toggle shading and space to switch objects.<br />
+<br />
+NOTE: the project is compressed in the .tgz format, if you are a windows user, you may need a tool like 7zip to extract the contents.<br />
+<br />
+<hr /><div>Standard Cube:<br />
+<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/_NnqjAQEn1Xo/TFSAt5QUmgI/AAAAAAAAALQ/Yf9XBOYhA7w/s1600/cube.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_NnqjAQEn1Xo/TFSAt5QUmgI/AAAAAAAAALQ/Yf9XBOYhA7w/s320/cube.png" /></a></div><br />
+</div><hr /><div>Standard Cube with Pseudo Shading:<br />
+<br />
+<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/_NnqjAQEn1Xo/TFSAxNHzBEI/AAAAAAAAALY/TMc-Dwzvz7k/s1600/cubeshade.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_NnqjAQEn1Xo/TFSAxNHzBEI/AAAAAAAAALY/TMc-Dwzvz7k/s320/cubeshade.png" /></a></div><br />
+</div><hr /><div>Standard Diamond:<br />
+<br />
+<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_NnqjAQEn1Xo/TFSA0YnNSYI/AAAAAAAAALg/Ym6OD5JVjrs/s1600/diamond.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_NnqjAQEn1Xo/TFSA0YnNSYI/AAAAAAAAALg/Ym6OD5JVjrs/s320/diamond.png" /></a></div><br />
+</div><hr /><div>Standard Diamond with Pseudo Shading:<br />
+<br />
+<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/_NnqjAQEn1Xo/TFSA39MwDSI/AAAAAAAAALo/WV5wzDtCyo8/s1600/diamondshade.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_NnqjAQEn1Xo/TFSA39MwDSI/AAAAAAAAALo/WV5wzDtCyo8/s320/diamondshade.png" /></a></div><br />
+</div><hr /><div>Textured Cube:<br />
+<br />
+<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_NnqjAQEn1Xo/TFSA_RVjHtI/AAAAAAAAALw/nwEjFLv8XvE/s1600/texturedcube.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/_NnqjAQEn1Xo/TFSA_RVjHtI/AAAAAAAAALw/nwEjFLv8XvE/s320/texturedcube.png" /></a></div><br />
+</div><hr /><div>Perspectively Correct Textured Cube:<br />
+<br />
+<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/_NnqjAQEn1Xo/TFSBCIUu4iI/AAAAAAAAAL4/_lgY1_mE4ow/s1600/texturedcorrectcube.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_NnqjAQEn1Xo/TFSBCIUu4iI/AAAAAAAAAL4/_lgY1_mE4ow/s320/texturedcorrectcube.png" /></a></div><br />
+</div><hr /><div>Perspectively Correct Textured Cube with shading:<br />
+<br />
+<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/_NnqjAQEn1Xo/TFSBEFUB9HI/AAAAAAAAAMA/uLPUugpgspg/s1600/texturedcubeshade.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/_NnqjAQEn1Xo/TFSBEFUB9HI/AAAAAAAAAMA/uLPUugpgspg/s320/texturedcubeshade.png" /></a></div><br />
+</div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3102167581424744259-6534662499260158364?l=yapgh.blogspot.com' alt='' /></div>
+<p><a href="http://feedads.g.doubleclick.net/~a/9OeYlfWcu240PezvaIgNkaxLy_Q/0/da"><img src="http://feedads.g.doubleclick.net/~a/9OeYlfWcu240PezvaIgNkaxLy_Q/0/di" border="0" ismap="true"></img></a><br/>
+<a href="http://feedads.g.doubleclick.net/~a/9OeYlfWcu240PezvaIgNkaxLy_Q/1/da"><img src="http://feedads.g.doubleclick.net/~a/9OeYlfWcu240PezvaIgNkaxLy_Q/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/YetAnotherPerlGameHackeryapgh/~4/nBAuxy51chg" height="1" width="1"/></div></div>
\ No newline at end of file