Exemple #1
0
        // Initializes Phonon Manager Component, in particular various Phonon API handles contained within Phonon
        // Manager Container. Initialize will be performed only once despite repeated calls to Initialize without
        // calls to Destroy.
        public void Initialize(bool initializeRenderer, PhononManager phononManager)
        {
            if (refCounter != 0)
            {
                return;
            }
            ++refCounter;

            bool useOpenCL;
            int  numComputeUnits;
            ComputeDeviceType deviceType;

            deviceType = phononManager.ComputeDeviceSettings(out numComputeUnits, out useOpenCL);

            SimulationSettings simulationSettings = phononManager.SimulationSettings();
            GlobalContext      globalContext      = phononManager.GlobalContext();
            RenderingSettings  renderingSettings  = phononManager.RenderingSettings();

            try
            {
                computeDevice.Create(useOpenCL, deviceType, numComputeUnits);
            }
            catch (Exception e)
            {
                throw e;
            }

            probeManager.Create();

            if (scene.Create(computeDevice, simulationSettings, globalContext) == Error.None)
            {
                try
                {
                    environment.Create(computeDevice, simulationSettings, scene, probeManager, globalContext);
                }
                catch (Exception e)
                {
                    throw e;
                }

                if (initializeRenderer)
                {
                    environmentRenderer.Create(environment, renderingSettings, simulationSettings, globalContext);
                }
            }

            if (initializeRenderer)
            {
                binauralRenderer.Create(environment, renderingSettings, globalContext);
            }
        }