###############################################
Assembling a Minimal HOOPS Luminate Application
###############################################

.. code:: cpp 
    
    // 1. Create a resource manager
    RED::Object* resmgr = RED::Factory::CreateInstance( CID_REDResourceManager );
    if( !resmgr )
        RC_TEST( RED_FAIL );
    RED::IResourceManager* iresmgr = resmgr->As< RED::IResourceManager >();

    // 2. Create a window (refer to the window task creation for details):
    RED::Object* window = RED::Factory::CreateREDWindow( *resmgr, hwnd, width, height, NULL, rc );
    if( !window )
        RC_TEST( RED_FAIL );
    RC_TEST( rc );
    RED::IWindow* iwindow = window->As< RED::IWindow >();

    // 3. Create a viewpoint, add it for display to the window:
    RED::Object* viewpoint = RED::Factory::CreateInstance( CID_REDViewpoint );
    if( !viewpoint )
        RC_TEST( RED_FAIL );
    RED::IViewpoint* iviewpoint = viewpoint->As< RED::IViewpoint >();

    RC_TEST( iwindow->InsertViewpoint( viewpoint, iresmgr->GetState() ) );


    // Create a shape (a mesh here):
    RED::Object* mesh = RED::Factory::CreateInstance( CID_REDMeshShape );
    if( !mesh )
        RC_TEST( RED_ALLOC_FAILURE );

    RC_TEST( iviewpoint->AddShape( mesh, iresmgr->GetState() ) );

We need to add the viewpoint to the window and a shape to the viewpoint if we want to assemble a complete application able to render something visible. Note that for simplicity, here, we don't see an intermediate class (the ``RED::IViewpointRenderList``) that is in charge of controlling viewpoint's viewport, anchoring and display order. This intermediate class is bypassed by the simple helper we use here (``RED::IWindow::InsertViewpoint``).
