public static void runSample(SampleBase sample) { SetupNativeLibraries.setup(); createEngine(out var engine); engine.setConsoleLoggerSink(consoleLoggingLevel); // Utils.Tests.PrintConnectors.print( engine ); try { eCapabilityFlags capabilityFlags = engine.getCapabilityFlags(); if (capabilityFlags.HasFlag(eCapabilityFlags.GraphicsWindowed)) { runWindowed(engine, sample); } else { if (!capabilityFlags.HasFlag(eCapabilityFlags.GraphicsFullscreen)) { throw new ApplicationException("The native library doesn't implement any 3D rendering"); } runFullScreen(engine, sample); } } catch (ShaderCompilerException sce) { sce.saveSourceCode(); throw; } finally { engine.clearLoggerSink(); } }
static void runFullScreen(iGraphicsEngine engine, SampleBase sample) { iVideoSetup videoSetup = new Utils.VideoSetup(idealDrmFormat); var dispatcher = engine.dispatcher(); ThreadPool.QueueUserWorkItem(obj => { Console.ReadKey(); dispatcher.postQuitMessage(0); }); engine.renderFullScreen(sample.context, fullscreenResolution, videoSetup); }
static void runWindowed(iGraphicsEngine engine, SampleBase sample) { iWindowSetup setup = new Utils.WindowSetup(); engine.renderWindowed(sample.context, null, setup); }