El segundo día de aprendizaje (a) osgViewer :: :: Visor isRealized ()

En primer lugar, revisar el proceso actual

osgViewer :: viewBase :: marco ()

{

viewerInit (); [

                          // crear una serie de eventos y robots de marco y eventos y las ventanas gráficas asociadas

                            -> Visor osgViewer :: :: ViewerInit ()

                           -> Ver osgViewer :: :: Init ();

                          -> (1) osgGA :: :: EventQueue createEvent ();

                            (2) osgGA :: MatrixManipulator :: Init ();

                            -> (2.1) de varios robots :: init ()

                 ]

isRealized ();

darse cuenta de();

adelantado (simulationTime);

eventTraversal ();

updateTraversal ();

renderingTraversals ();

}

Esto debería ser isRealized () a, viewerBase :: isRealized () es una función virtual pura

        / ** Obtiene si al menos de uno de estos espectadores se realizan las ventanas * /.
        Bool virtual isRealized () const = 0;

Un comentario breve mirada es determinar si al menos una ventana de visualización listo

A continuación, echar un vistazo a la forma en la ventanilla única clase derivada y ventanas de composición para lograr.

ventanilla única


bool Visor :: isRealized () const
{
    Contextos contextos;
    const_cast <Visor *> (este) -> getContexts (contextos);

    int numRealizedWindows sin signo = 0;

    // borrar todas las operaciones previamente asignados
    para (Contextos :: iterador braza = contexts.begin ();
        ! Braza = contexts.end ();
        ++ braza)
    {
        if ((* braza) -> isRealized ()) + + numRealizedWindows;
    }
    
    NumRealizedWindows de retorno> 0;
}

compuesto ventana:


bool CompositeViewer :: isRealized () const
{
    Contextos contextos;
    const_cast <CompositeViewer *> (este) -> getContexts (contextos);

    int numRealizedWindows sin signo = 0;

    // borrar todas las operaciones previamente asignados
    para (Contextos :: iterador braza = contexts.begin ();
        ! Braza = contexts.end ();
        ++ braza)
    {
        if ((* braza) -> isRealized ()) + + numRealizedWindows;
    }
    
    NumRealizedWindows de retorno> 0;
}

Sustancialmente el mismo, sólo diferentes tipos de conversión de vista.

¿Qué es conseguir t Graphics Array contexto. Entonces atravesar el contexto de una matriz, siempre que hay una lista para Ok

Esta función es necesaria puede verse en el análisis actual

1, contextos,

2, osgViewer :: :: Visor getContexts ().

3, osg :: GraphicContext :: isRealized ()

 

1, en el viewerBase, define una matriz
        typedef std :: vector <osg :: GraphicsContext *> Contextos;

Que los contextos son osg :: gama GraphicsContext contexto gráfico en el artículo también se analizó, esto no es sólo un parámetro de contexto gráficos de la ventana, pero hay una cola de operaciones, vistazo a estas variables miembro, es de ningún modo saben tan sencillo

        OpenThreads :: Tema * _threadOfLastMakeCurrent;
        
        OpenThreads :: mutex _operationsMutex;
        osg :: ref_ptr <osg :: RefBlock> _operationsBlock;
        _Operations OperationQueue;
        osg :: ref_ptr <Funcionamiento> _currentOperation;

        ref_ptr <GraphicsThread> _graphicsThread;
        
        ref_ptr <ResizedCallback> _resizedCallback;

 

Pero por el momento yo no entendía, el primero en dejar una pregunta

 

Este isRealized () se usa en tres lugares

marco (), ejecutar () y establecer el modelo de subprocesamiento setThreadingModel ()

 

Ahora pueden anotar el proceso, o para una sola ventana, por ejemplo,

 

osgViewer :: viewBase :: marco ()

{

viewerInit (); [

                          // crear una serie de eventos y robots de marco y eventos y las ventanas gráficas asociadas

                            -> Visor osgViewer :: :: ViewerInit ()

                           -> Ver osgViewer :: :: Init ();

                          -> (1) osgGA :: :: EventQueue createEvent ();

                            (2) osgGA :: MatrixManipulator :: Init ();

                            -> (2.1) de varios robots :: init ()

                 ]

isRealized (); [

                                    // obtener la matriz contexto gráfico. Entonces atravesar el contexto de una matriz, siempre que hay una lista para Ok

                                  -> Visor osgViewer :: :: isRealized ();

                                 -> (1) osgViewer :: :: Viewer getContexts ().

                                -> (2) osg :: :: GraphicContext isRealized ()

 

                    ]

darse cuenta de();

adelantado (simulationTime);

eventTraversal ();

updateTraversal ();

renderingTraversals ();

}

 

 

 

Publicados 673 artículos originales · ganado elogios 18 · vistas 280 000 +

Supongo que te gusta

Origin blog.csdn.net/directx3d_beginner/article/details/104982468
Recomendado
Clasificación