This is topology of obj-file
how to enable frustum culling on this by visible pyramid ?
how to implement frustum culling on solid mesh?
Re: how to implement frustum culling on solid mesh?
Culling is mostly per node. So if it's all one node then it will cull all or nothing. If those are independent nodes, then culling is done with ISceneNode:: setAutomaticCulling which can take any value of E_CULLING_TYPE. The default for meshscenenodes should be EAC_BOX.
If you want culling per polygon you can create an IOctreeSceneNode with ISceneManager::addOctreeSceneNode. Thought it depends a lot on the scene if that makes sense. Basically in such cases you care about the worst case - so if there is any time you can see the whole scene then this will always be a bad idea. If your scene is large enough that you never see everything at once then it can be worth it. But it's done on CPU and you will get then mesh-uploads to GPU each frame. There are use-cases for it, but you should really profile if it's worth it as often it's far better to set the whole mesh to static instead which means it will stay on GPU (IMesh::setHardwareMappingHint).
Another option is to split your scene into more scenenodes. Thought again a thing you have to measure if it's worth it as Irrlicht has a pretty high per-node overhead when drawing. So for culling it can be great (no drawing then), but if your nodes get too small and you get more than say 5000 nodes (depends on system, just throwing out a rough number here) on screen the drawing overhead will start being expensive.
If you want culling per polygon you can create an IOctreeSceneNode with ISceneManager::addOctreeSceneNode. Thought it depends a lot on the scene if that makes sense. Basically in such cases you care about the worst case - so if there is any time you can see the whole scene then this will always be a bad idea. If your scene is large enough that you never see everything at once then it can be worth it. But it's done on CPU and you will get then mesh-uploads to GPU each frame. There are use-cases for it, but you should really profile if it's worth it as often it's far better to set the whole mesh to static instead which means it will stay on GPU (IMesh::setHardwareMappingHint).
Another option is to split your scene into more scenenodes. Thought again a thing you have to measure if it's worth it as Irrlicht has a pretty high per-node overhead when drawing. So for culling it can be great (no drawing then), but if your nodes get too small and you get more than say 5000 nodes (depends on system, just throwing out a rough number here) on screen the drawing overhead will start being expensive.
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Re: how to implement frustum culling on solid mesh?
OK, but still the options I mentioned above is basically what you can do. One more option is writing your own node (or other code) which does decide on it's own which meshbuffers to send to the driver.
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm