Creating a 3D Game Engine (Part 12)


 

Today I have gotten the camera system to a decent place, and made a simple free look demo. Most of the code had already been implemented, inside the vector and matrix classes, I just had to piece it together into a camera object. I also added a grid of cubes, to better see the camera working. Sadly these extra 200 cubes slowed down the performance by a good chunk. Previously I was getting around 3,500 FPS (with 3 cubes), now I’m only getting around 2,000 FPS (with around 220 cubes).

Granted the performance is bound to drop as more objects are added, but I think I can improve this a lot. At the moment, I am not doing any sort of culling, and when I get that working I feel like it would give a good boost. However, it’s probably not the highest thing on the list since I’m still getting reasonable frame-rates.

Coming up next I would like to fix the lighting system (currently it’s just a hacked on ambient/directional light) and I need to get a COLLADA model importer functioning. I’ll also have to pick up a 3D modelling program and make some better models to test with. I did try to learn Blender a bit, but I found it cumbersome. Gonna give 3DS Max a go again. Haven’t used it in many years, but I was at one point pretty comfortable with the app. I think my first model will be a soda can, as it’s something easy and recognizable. See ya next time!

2 Comments

  1. Heya,

    Lookin’ good! I’ve been lurking on your site for some time now. Thank you for all the great book reviews and insights.

    Though I am by no means experienced in 3D graphics, my gut feeling tells me that it might be better to do culling first, before doing other parts of the engine. It seems like it’s one of those things that might come back to haunt you when you’ve build the more difficult parts. Besides, more FPS! Yay.

    I was wondering whether you’ll release (parts of) the source code of your engine! It might be a nice idea to see the code base growing from the ground up.

    1. Author

      Yes, I agree. I actually spent the morning adding in frustum culling. It certainly improved performance, but maybe not as much as I hoped.

      I would like to release some of the source code eventually. Currently most of the classes are unfinished (with just enough done to work on the demo) but maybe I can find a way to post some of this stuff.

      Thanks for your support.

Leave a Reply

Your email address will not be published. Required fields are marked *