示例#1
0
        /// <summary>
        /// Called when the application is creating its Ultraviolet context.
        /// </summary>
        /// <returns>The Ultraviolet context.</returns>
        protected override UltravioletContext OnCreatingUltravioletContext()
        {
            var graphicsConfig = OpenGLGraphicsConfiguration.Default;

            graphicsConfig.MultiSampleBuffers      = 1;
            graphicsConfig.MultiSampleSamples      = 8;
            graphicsConfig.SrgbBuffersEnabled      = false;
            graphicsConfig.SrgbDefaultForTexture2D = false;

            var contextConfig = new SDL2UltravioletConfiguration();

            contextConfig.SupportsHighDensityDisplayModes = true;
            contextConfig.EnableServiceMode        = ShouldRunInServiceMode();
            contextConfig.WatchViewFilesForChanges = ShouldDynamicallyReloadContent();
            contextConfig.Plugins.Add(new OpenGLGraphicsPlugin(graphicsConfig));
            contextConfig.Plugins.Add(new BASSAudioPlugin());
            contextConfig.Plugins.Add(new FreeTypeFontPlugin());
            contextConfig.Plugins.Add(new PresentationFoundationPlugin());
            PopulateConfiguration(contextConfig);

#if DEBUG
            contextConfig.Debug         = true;
            contextConfig.DebugLevels   = DebugLevels.Error | DebugLevels.Warning;
            contextConfig.DebugCallback = (uv, level, message) =>
            {
                System.Diagnostics.Debug.WriteLine(message);
            };
#endif

            return(new SDL2UltravioletContext(this, contextConfig));
        }
示例#2
0
        protected override UltravioletContext OnCreatingUltravioletContext()
        {
            var configuration = new SDL2UltravioletConfiguration();

            configuration.Plugins.Add(new OpenGLGraphicsPlugin());
            configuration.Plugins.Add(new BASSAudioPlugin());

            return(new SDL2UltravioletContext(this, configuration));
        }
示例#3
0
        protected override UltravioletContext OnCreatingUltravioletContext()
        {
            var configuration = new SDL2UltravioletConfiguration();

            configuration.EnableServiceMode        = ShouldRunInServiceMode();
            configuration.WatchViewFilesForChanges = ShouldDynamicallyReloadContent();
            configuration.Plugins.Add(new OpenGLGraphicsPlugin());
            configuration.Plugins.Add(new BASSAudioPlugin());
            configuration.Plugins.Add(new FreeTypeFontPlugin());
            configuration.Plugins.Add(new PresentationFoundationPlugin());

            return(new SDL2UltravioletContext(this, configuration));
        }
示例#4
0
        private static SDL2UltravioletConfiguration SetConfiguration()
        {
            var configuration = new SDL2UltravioletConfiguration
            {
                InitialWindowPosition = new Rectangle(Point2.Zero, new Size2(1280, 720)),
            };

            configuration.Plugins.Add(new OpenGLGraphicsPlugin());
            configuration.Plugins.Add(new BASSAudioPlugin());
            configuration.Plugins.Add(new FreeTypeFontPlugin());

#if DEBUG
            AddDebugConfig(configuration);
#endif
            return(configuration);
        }
示例#5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SDL2UltravioletContext"/> class.
        /// </summary>
        /// <param name="host">The object that is hosting the Ultraviolet context.</param>
        /// <param name="configuration">The Ultraviolet Framework configuration settings for this context.</param>
        public unsafe SDL2UltravioletContext(IUltravioletHost host, SDL2UltravioletConfiguration configuration)
            : base(host, configuration)
        {
            Contract.Require(configuration, nameof(configuration));

            if (!InitSDL(configuration))
            {
                throw new SDL2Exception();
            }

            this.onWindowDrawing = (context, time, window) =>
                                   ((SDL2UltravioletContext)context).OnWindowDrawing(time, window);
            this.onWindowDrawn = (context, time, window) =>
                                 ((SDL2UltravioletContext)context).OnWindowDrawn(time, window);

            eventFilter    = new SDL_EventFilter(SDLEventFilter);
            eventFilterPtr = Marshal.GetFunctionPointerForDelegate(eventFilter);
            SDL_SetEventFilter(eventFilterPtr, IntPtr.Zero);

            LoadSubsystemAssemblies(configuration);
            this.swapChainManager = IsRunningInServiceMode ? new DummySwapChainManager(this) : SwapChainManager.Create();

            this.platform = InitializePlatformSubsystem(configuration);
            this.graphics = InitializeGraphicsSubsystem(configuration);

            if (!this.platform.IsPrimaryWindowInitialized)
            {
                throw new InvalidOperationException(UltravioletStrings.PrimaryWindowMustBeInitialized);
            }

            this.audio   = InitializeAudioSubsystem(configuration);
            this.input   = InitializeInputSubsystem();
            this.content = InitializeContentSubsystem();
            this.ui      = InitializeUISubsystem(configuration);

            PumpEvents();

            InitializeContext();
            InitializeViewProvider(configuration);
            InitializePlugins(configuration);
        }
        /// <inheritdoc/>
        protected override UltravioletContext OnCreatingUltravioletContext()
        {
            var configuration = new SDL2UltravioletConfiguration();

            configuration.Headless                = headless;
            configuration.EnableServiceMode       = serviceMode;
            configuration.IsHardwareInputDisabled = true;
            configuration.Debug         = true;
            configuration.DebugLevels   = DebugLevels.Error | DebugLevels.Warning;
            configuration.DebugCallback = (uv, level, message) =>
            {
                System.Diagnostics.Debug.WriteLine(message);
            };

            var needsGraphicsSubsystem = !plugins?.Any(x => x is OpenGLGraphicsPlugin) ?? true;

            if (needsGraphicsSubsystem)
            {
                plugins = plugins ?? new List <UltravioletPlugin>();
                plugins.Add(new OpenGLGraphicsPlugin());
            }

            var needsAudioSubsystem = !(plugins?.Any(x => x is BASSAudioPlugin || x is FMODAudioPlugin) ?? false);

            if (needsAudioSubsystem)
            {
                plugins = plugins ?? new List <UltravioletPlugin>();
                plugins.Add(new BASSAudioPlugin());
            }

            foreach (var plugin in plugins)
            {
                configuration.Plugins.Add(plugin);
            }

            configurer?.Invoke(configuration);

            return(new SDL2UltravioletContext(this, configuration));
        }