I would imagine it would work the same whether the node is transparent or solid...
Within the smgr there are 2 lists (at least). One for solid objects and one for transparent ones. The solid objects are rendered first in an arbitrary order as the order doesn't matter but the transparent objects must be rendered back to front (i.e. farthest from camera first) in order to get the correct alpha blending.
But that shouldn't affect you if you're rendering a node manually...
Incidentally why do you not want to use smgr->drawAll()?
void CAnimatedMeshSceneNode::render()
{
video::IVideoDriver* driver = SceneManager->getVideoDriver();
if (!Mesh || !driver)
return;
bool isTransparentPass =
SceneManager->getSceneNodeRenderPass() == scene::ESNRP_TRANSPARENT;
//... and only render transparent materials during the transparent render pass
However, there's no public method to set the scene manager's render pass, so the test never passes, and mesh buffers with transparent materials don't get rendered.
I don't see a solution to that other than modifying Irrlicht and recompiling. Trivially, you could just add an ISceneManager::setSceneNodeRenderPass() method, and tell the scene manager that it's in the ESNRP_TRANSPARENT pass before calling your node's render() method.
Is this really a route you want to take? I'd echo JP's question about what requirement has led you to do the rendering yourself.
I think if you get the transparent materials spread out to its own material, it would get automatically sorted. That's what I did in one my of my test program.
Another solution could be to duplicate the node, put it into a second scene manager, and disable the solid (resp. transparent) meshbuffers. It might already work with one scene manager, but you cannot change the order among the same type of materials.