void ViewportGadget::doRender( const Style *style ) const { glClearColor( 0.3f, 0.3f, 0.3f, 0.0f ); glClearDepth( 1.0f ); glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); IECoreGL::ToGLConverterPtr converter = new IECoreGL::ToGLCameraConverter( const_cast<CameraController &>( m_cameraController ).getCamera() ); IECoreGL::CameraPtr camera = boost::static_pointer_cast<IECoreGL::Camera>( converter->convert() ); camera->render( 0 ); // Set up the camera to world matrix in gl_TextureMatrix[0] so that we can // reference world space positions in shaders // This should be more appropriately named in a uniform buffer, but the // easiest time to get this right is probably when we switch everything // away from using fixed function stuff glActiveTexture( GL_TEXTURE0 ); glMatrixMode( GL_TEXTURE ); glLoadIdentity(); glMultMatrixf( camera->getTransform().getValue() ); glMatrixMode( GL_MODELVIEW ); Gadget::doRender( style ); }
void ViewportGadget::doRender( const Style *style ) const { glClearColor( 0.3f, 0.3f, 0.3f, 0.0f ); glClearDepth( 1.0f ); glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); IECoreGL::ToGLConverterPtr converter = new IECoreGL::ToGLCameraConverter( const_cast<CameraController &>( m_cameraController ).getCamera() ); IECoreGL::CameraPtr camera = staticPointerCast<IECoreGL::Camera>( converter->convert() ); camera->render( 0 ); IndividualContainer::doRender( style ); }
void ViewportGadget::SelectionScope::begin( const ViewportGadget *viewportGadget, const Imath::Box2f &rasterRegion, const Imath::M44f &transform, IECoreGL::Selector::Mode mode ) { V2f viewport = viewportGadget->getViewport(); Box2f ndcRegion( rasterRegion.min / viewport, rasterRegion.max / viewport ); IECoreGL::ToGLConverterPtr converter = new IECoreGL::ToGLCameraConverter( const_cast<CameraController &>( viewportGadget->m_cameraController ).getCamera() ); IECoreGL::CameraPtr camera = staticPointerCast<IECoreGL::Camera>( converter->convert() ); /// \todo It would be better to base this on whether we have a depth buffer or not, but /// we don't have access to that information right now. m_depthSort = camera->isInstanceOf( IECoreGL::PerspectiveCamera::staticTypeId() ); camera->render( 0 ); glClearColor( 0.3f, 0.3f, 0.3f, 0.0f ); glClearDepth( 1.0f ); glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); m_selector = SelectorPtr( new IECoreGL::Selector( ndcRegion, mode, m_selection ) ); glPushMatrix(); glMultMatrixf( transform.getValue() ); }