コード例 #1
0
 public OpenTKWindow(UInt16 width, UInt16 height, GameWindowFlags window, DisplayDevice display, Renderer.RenderAPI render) : this(width, height, window, display, render, 3, 3)
 {
     if (render.Equals(Renderer.RenderAPI.OpenGL))
     {
         Console.WriteLine("OpenGL renderer chosen but no version providen, assuming version 3.3."); //NOTE: DX10, programmable pipeline, might look into fixed since that seems fun as well
         this.Load += Renderer.Initialize_OpenGL;
     }
     Renderer.Initialize(this, render);
 }
コード例 #2
0
 public OpenTKWindow(UInt16 width, UInt16 height, GameWindowFlags window, DisplayDevice display, Renderer.RenderAPI render, UInt16 major, UInt16 minor) : base(width, height, GraphicsMode.Default, "Engine", window, display, major, minor, GraphicsContextFlags.ForwardCompatible)
 {
     if (!render.Equals(Renderer.RenderAPI.OpenGL))
     {
         throw new Exception("Failure while requesting renderer.");
     }
     else if (major < 3 || (major == 3 && minor < 3))
     {
         throw new Exception("Requested version of OpenGL is not supported, minimum is 3.3."); //We don't deal with legacy for now
     }
     else
     {
         this.Load += Renderer.Initialize_OpenGL;
         Renderer.Initialize(this, Renderer.RenderAPI.OpenGL);
     }
 }
コード例 #3
0
ファイル: Main.cs プロジェクト: hayachan19/LambdaEngine
        //TODO: Separate?
        public static void ParseArguments(String[] args, out Resolution res, out Renderer.RenderAPI renderer, out Byte major, out Byte minor)
        {
            //Defaults
            renderer        = Renderer.RenderAPI.Software;
            major           = 0;
            minor           = 0;
            res.Width       = 640;
            res.Height      = 480;
            res.Depth       = 16;
            res.RefreshRate = 60;

            ushort currentArg = 0;

            foreach (string arg in args)
            {
                if (currentArg + 1 == args.Length)
                {
                    break;
                }

                String nextArg = args[currentArg + 1];
                if (arg[0].Equals('-'))
                {
                    switch (arg.TrimStart('-'))
                    {
                    case "game":
                        gameModule = ModuleLoader.LoadModuleAndExtractClass(nextArg, "Main");
                        break;

                    case "render":
                        /*switch (nextArg)
                         * {
                         *  case var i when i.StartsWith("opengl"):
                         *      break;
                         * }*/
                        //hack: maybe change to switch?
                        if (nextArg.StartsWith("opengl"))
                        {
                            renderer = Renderer.RenderAPI.OpenGL;
                            String version = nextArg.Substring(6);
                            major = Byte.Parse(version[0].ToString()); minor = Byte.Parse(version[1].ToString());
                        }
                        else if (nextArg.StartsWith("vulkan"))
                        {
                            renderer = Renderer.RenderAPI.Vulkan;
                        }
                        else if (nextArg.StartsWith("dx"))
                        {
                            renderer = Renderer.RenderAPI.DirectX;
                            String version = nextArg.Substring(2);
                            major = Byte.Parse(version);
                        }
                        else if (nextArg.StartsWith("soft"))
                        {
                            renderer = Renderer.RenderAPI.Software;
                        }
                        else
                        {
                            throw new Exception("Invalid renderer.");
                        }

                        break;

                    case "res":
                        String[] resString = nextArg.Split(new Char[2] {
                            'x', '@'
                        });
                        if (resString.Length != 4)
                        {
                            break;
                        }

                        bool       validResolution     = false;
                        Resolution requestedResolution = new Resolution
                        {
                            Width       = ushort.Parse(resString[0]),
                            Height      = ushort.Parse(resString[1]),
                            Depth       = ushort.Parse(resString[2]),
                            RefreshRate = ushort.Parse(resString[3])
                        };
                        foreach (DisplayResolution testedResolution in displayDevice.AvailableResolutions)
                        {
                            /*bool w = false;
                             * bool h = false;
                             * bool d = false;
                             * bool r = false;
                             * bool rf = false;
                             * UInt16 re = (UInt16)testedResolution.RefreshRate;*/

                            if (requestedResolution.Width.Equals(Convert.ToUInt16(testedResolution.Width)) ||
                                requestedResolution.Height.Equals(Convert.ToUInt16(testedResolution.Height)) ||
                                requestedResolution.Depth.Equals(Convert.ToUInt16(testedResolution.BitsPerPixel)) ||
                                requestedResolution.RefreshRate.Equals(Convert.ToUInt16(testedResolution.RefreshRate)))
                            //if (requestedResolution.width.Equals(testedResolution.Width) && requestedResolution.height.Equals(testedResolution.Height) && requestedResolution.depth.Equals(testedResolution.BitsPerPixel) && requestedResolution.refresh.Equals((UInt16)testedResolution.RefreshRate))
                            {
                                validResolution = true;
                                res.Width       = requestedResolution.Width;
                                res.Height      = requestedResolution.Height;
                                res.Depth       = requestedResolution.Depth;
                                res.RefreshRate = requestedResolution.RefreshRate;
                            }
                            if (validResolution)
                            {
                                break;
                            }
                        }
                        if (!validResolution)
                        {
                            throw new Exception("Invalid resolution.");
                        }
                        break;

                    default:
                        break;
                    }
                }
                currentArg++;
            }
        }