I've looked at the Irrlicht code a bit (I admit it was about a month ago so *maybe* things have changed), and it looks like all the vertex and index data is stored in plain old system memory.
For example, when rendering on DX the calls used are DrawPrimitiveUP/DrawIndexedPrimitiveUP. This is despite the fact that every reference on DX says that these calls are very slow and that applications looking for good performance should use vertex and index buffers along with DrawPrimitive/DrawIndexedPrimitive. Similarly, I couldn't find any code in the GL renderer that used vertex buffer objects (VBOs).
I can understand why having the data in system memory is convenient (you can animate meshes without any special handling, and you can perform collision detection from the same triangles that you use to render), but I wonder how much faster Irrlict could be if it handled geometry like a modern engine.
NOTE: It is entirely possible that I missed the code for using vertex buffers or VBOs and have thus made a complete fool of myself. If that is the case please direct me to the appropriate place in the source code.
Am I missing something?
If you want optimized mesh storage/render pipeline, take a look at IrrlichtNX++.
________
Marriage Advice Advice
________
Marriage Advice Advice
Last edited by disanti on Thu Feb 24, 2011 10:39 am, edited 1 time in total.
-
Guest