Commit | Line | Data |
2b546c01 |
1 | <div class="blog"> |
2 | <h1 id="NAME"> |
1d5d4d44 |
3 | Perl+SDL 3D Rendering |
2b546c01 |
4 | </h1> |
5 | <div class="CONTENT"> |
1d5d4d44 |
6 | <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 /> |
7 | <br /> |
8 | <i>--yapgh</i><br /> |
9 | <br /> |
10 | <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 /> |
11 | <br /> |
12 | 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 /> |
13 | <br /> |
14 | 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 /> |
15 | <br /> |
16 | <hr /><div>Standard Cube:<br /> |
17 | <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 /> |
18 | </div><hr /><div>Standard Cube with Pseudo Shading:<br /> |
19 | <br /> |
20 | <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 /> |
21 | </div><hr /><div>Standard Diamond:<br /> |
22 | <br /> |
23 | <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 /> |
24 | </div><hr /><div>Standard Diamond with Pseudo Shading:<br /> |
25 | <br /> |
26 | <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 /> |
27 | </div><hr /><div>Textured Cube:<br /> |
28 | <br /> |
29 | <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 /> |
30 | </div><hr /><div>Perspectively Correct Textured Cube:<br /> |
31 | <br /> |
32 | <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 /> |
33 | </div><hr /><div>Perspectively Correct Textured Cube with shading:<br /> |
34 | <br /> |
35 | <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 /> |
36 | </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> |
37 | <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/> |
38 | <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> |