OpenDingux 3D (slow edition)

Incerdibly slow 3D on the Dingoo A320

Looking back on these posts, I should probably try to update them a little more frequently. I think I might stick to relatively short posts, that way I might actually get some more out!

Anyway, in the last post I described how I set up a development environment that was basically Xubuntu running in a virtual machine, and then SSHing into that from OS X. Well I’ve been putting that to use building a simple little software renderer for the Dingoo. The main motivation for this is that as part of my PhD I’ve created raycasting software for volume rendering and this has turned into quite a sophisticated and dare I say it useful program. But, one thing I’ve realised is that although I’m adept with raycasting I know very little about implementing standard polygon rendering (except for understanding the general concept). So I thought let’s try and write one for the Dingoo.

So far

A few quick notes about the Dingoo that make this project a little interesting, it has no GPU so everything has to be done in software and it has no FPU so floating point operations are slow, very slow. The video you see below is a 3D cube being software rendered on the Dingoo. Yes it is slow, I need to put an FPS counter on but I’m not betting on greater than 1 FPS. This is mainly because at the moment it’s still using floating point calculations in the matrices and vectors. There’s also no back-face culling so half of what it’s rendering it doesn’t need to. There is however a working depth-buffer, again at the moment this is using floats, I know, that’s next on the list. The colours look a lot more washed out than what they actually are, blame me filming it late at night.

I’ll get around to putting the code on github soon, I think next on the list is sorting out the visual glitches around the top and sides of the cube. Then on to back-face culling and then probably using fixed-point arithmetic, that should speed it up considerably.

David Roberts

Read more posts by this author.

Newcastle upon Tyne, UK https://davidatroberts.github.io/