Main   
   For Your Info   
   For Fun   
   Javascript   
   PHP   
   Real Time   
   SoftGeL   
   Java   
   Blackjack   
   OpenTama   

Introduction

The purpose of these tutorials is to demonstrate how to do 2D and 3D graphics in software. We're using JavaScript so that you can see exactly how it's working and easily mess with the parameters to see how it affects the output. You don't need to download a compiler to start playing. The focus is on concepts, not implementation. You should understand the concepts well enough that you can port them to another language.

We're actually going to be working with a number of languages as these tutorials progress in complexity. JavaScript is sufficient to teach 2D translation, rotation, sprites, animation and texturing. As well as the core 3D equations. We'll then port our concepts over to PHP where we can take advantage of full color graphics and get into more advanced 3D concepts. And from there we'll get into C and learn how to apply the concepts learned in PHP to real time applications.

You may be thinking "why not just use Direct3D or OpenGL?" Lesson 4 is actually the most advanced I got with software based rendering before discovering Direct3D. I used that for awhile and then decided to give OpenGL a try. I havn't used Direct3D since. But the thing I found is that the equations I'm using to make things move around in three dimensions are the same equations used to actually draw the graphics. So not only will you be learning how to write your own graphics API but you'll also be learning the equations used to create objects that move around.

Knowing how to do software rendering also has the distinct advantage in that you'll be able to create 3D games on pretty much any system with enough CPU power and the ability to plot a pixel. A lot of handhelds don't have built in 3D capabilities. But they can obviously plot a lot of pixels quickly. That's all you need.

Note that all these tutorials are locked at 10 frames per second. JavaScript has the ability to execute a function every n milliseconds. But this doesn't include the time to actually get through the function. So the actual framerate is less than 10fps. These tutorials can actually run quite a bit faster than they're defaulted to.

Oh yes, and I'm working with a 1.2Ghz machine which seems to be about the minimum to view these. Especially the more advanced ones.


All Tutorials Copyright 2004-2007 Icarus Independent
View the License Agreement