Anaglyph rendering.
Posted: Mon May 04, 2009 12:53 pm
hey, though I should post a bit of code I did lately for anaglyph rendering.
similar to the code by bob, here: http://irrlicht.sourceforge.net/phpBB2/ ... hp?t=32209
but fixes a few problems, and more irrlicht friendly.

more images here
Code: Select all
void CGameEngine::drawAnaglyph()
{
vector3df oldPosition=camera->getPosition();
vector3df oldTarget=camera->getTarget();
matrix4 startMatrix=camera->getAbsoluteTransformation();
vector3df focusPoint= (camera->getTarget()-camera->getAbsolutePosition()).setLength(1) + camera->getAbsolutePosition() ;
//Left eye...
vector3df leftEye;
matrix4 leftMove;
leftMove.setTranslation( vector3df(-0.01f,0.0f,0.0f) );
leftEye=(startMatrix*leftMove).getTranslation();
//clear the depth buffer, and color
driver->beginScene( true, true, SColor(0,200,200,255) );
driver->getOverrideMaterial().Material.ColorMask=ECP_RED;
driver->getOverrideMaterial().EnableFlags=EMF_COLOR_MASK;
driver->getOverrideMaterial().EnablePasses=ESNRP_SKY_BOX+ESNRP_SOLID+ESNRP_TRANSPARENT+ESNRP_TRANSPARENT_EFFECT+ESNRP_SHADOW;
camera->setPosition( leftEye );
camera->setTarget( focusPoint );
draw(); // 'smgr->drawAll();' may go here
//Right eye...
vector3df rightEye;
matrix4 rightMove;
rightMove.setTranslation( vector3df(0.01f,0.0f,0.0f) );
rightEye=(startMatrix*rightMove).getTranslation();
//clear the depth buffer
driver->clearZBuffer();
driver->getOverrideMaterial().Material.ColorMask=ECP_GREEN+ECP_BLUE;
driver->getOverrideMaterial().EnableFlags=EMF_COLOR_MASK;
driver->getOverrideMaterial().EnablePasses=ESNRP_SKY_BOX+ESNRP_SOLID+ESNRP_TRANSPARENT+ESNRP_TRANSPARENT_EFFECT+ESNRP_SHADOW;
camera->setPosition( rightEye );
camera->setTarget( focusPoint );
draw(); // 'smgr->drawAll();' may go here
driver->endScene();
driver->getOverrideMaterial().Material.ColorMask=ECP_ALL;
driver->getOverrideMaterial().EnableFlags=0;
driver->getOverrideMaterial().EnablePasses=0;
camera->setPosition( oldPosition );
camera->setTarget( oldTarget );
}
but fixes a few problems, and more irrlicht friendly.

more images here