Exemplo n.º 1
0
 public Application(OpenTK.DisplayDevice device)
     :   base(
         1920 / 2,
         64,
         //(int)(display.Width * 0.85f),
         //(int)(display.Height * 0.85f),
         new GraphicsMode(
             new ColorFormat(8, 8, 8, 0), // r g b a
             24, 8, 2                     /* depth stencil msaa  */
             ),
         "RenderStack",
         OpenTK.GameWindowFlags.Default,
         device,
         1, 5, 0, null
Exemplo n.º 2
0
        private OpenTK.Matrix4 WorldMatrix; // r_world_matrix

        public GLDevice(OpenTK.GameWindow form, OpenTK.DisplayDevice openTKDevice)
            : base(typeof(GLDeviceDesc),
                   typeof(GLGraphics),
                   typeof(GLTextureAtlas),
                   typeof(GLModel),
                   typeof(GLModelDesc),
                   typeof(GLAliasModel),
                   typeof(GLAliasModelDesc),
                   typeof(GLTexture),
                   typeof(GLTextureDesc))
        {
            Form         = form;
            OpenTKDevice = openTKDevice;

            TextureFilters = new GLTextureFilter[]
            {
                new GLTextureFilter("GL_NEAREST", TextureMinFilter.Nearest, TextureMagFilter.Nearest),
                new GLTextureFilter("GL_LINEAR", TextureMinFilter.Linear, TextureMagFilter.Linear),
                new GLTextureFilter("GL_NEAREST_MIPMAP_NEAREST", TextureMinFilter.NearestMipmapNearest, TextureMagFilter.Nearest),
                new GLTextureFilter("GL_LINEAR_MIPMAP_NEAREST", TextureMinFilter.LinearMipmapNearest, TextureMagFilter.Linear),
                new GLTextureFilter("GL_NEAREST_MIPMAP_LINEAR", TextureMinFilter.NearestMipmapLinear, TextureMagFilter.Nearest),
                new GLTextureFilter("GL_LINEAR_MIPMAP_LINEAR", TextureMinFilter.LinearMipmapLinear, TextureMagFilter.Linear)
            };

            BlendModes = new GLTextureBlendMode[]
            {
                new GLTextureBlendMode("GL_MODULATE", TextureEnvMode.Modulate),
                new GLTextureBlendMode("GL_ADD", TextureEnvMode.Add),
                new GLTextureBlendMode("GL_REPLACE", TextureEnvMode.Replace),
                new GLTextureBlendMode("GL_DECAL", TextureEnvMode.Decal),
                new GLTextureBlendMode("GL_REPLACE_EXT", TextureEnvMode.ReplaceExt),
                new GLTextureBlendMode("GL_TEXTURE_ENV_BIAS_SGIX", TextureEnvMode.TextureEnvBiasSgix),
                new GLTextureBlendMode("GL_COMBINE", TextureEnvMode.Combine)
            };

            PixelFormats = new GLPixelFormat[]
            {
                new GLPixelFormat("GL_LUMINANCE", PixelFormat.Luminance),
                new GLPixelFormat("GL_RGBA", PixelFormat.Rgba),
                new GLPixelFormat("GL_RGB", PixelFormat.Rgb),
                new GLPixelFormat("GL_BGR", PixelFormat.Bgr),
                new GLPixelFormat("GL_BGRA", PixelFormat.Bgra),
                new GLPixelFormat("GL_ALPHA", PixelFormat.Alpha)
            };
        }
Exemplo n.º 3
0
        public static OpenTK.DisplayDevice ChooseDisplay(bool wantPrimary)
        {
            OpenTK.DisplayDevice       chosenDisplay = null; //OpenTK.DisplayDevice.Default;
            List <OpenTK.DisplayIndex> indices       = new List <OpenTK.DisplayIndex>();

            indices.Add(OpenTK.DisplayIndex.Default);
            indices.Add(OpenTK.DisplayIndex.First);
            indices.Add(OpenTK.DisplayIndex.Second);
            indices.Add(OpenTK.DisplayIndex.Third);
            indices.Add(OpenTK.DisplayIndex.Fourth);
            indices.Add(OpenTK.DisplayIndex.Fifth);
            indices.Add(OpenTK.DisplayIndex.Sixth);
            foreach (var index in indices)
            {
                var display = OpenTK.DisplayDevice.GetDisplay(index);
                if (display == null)
                {
                    continue;
                }
                if ((chosenDisplay == null) && (display.IsPrimary == wantPrimary))
                {
                    chosenDisplay = display;
                }
                if (Configuration.trace)
                {
                    Trace.TraceInformation(
                        " "
                        + index.ToString()
                        + " "
                        + display.Width
                        + " x "
                        + display.Height
                        + ((display == chosenDisplay) ? " (using this one)" : "")
                        );
                }
            }
            return(chosenDisplay);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Display Graphic device informations
        /// </summary>
        public static void Diagnostic()
        {
            Trace.WriteLine("Video informations :");
            Trace.Indent();


            // Dll version
            Trace.WriteLine("System informations :");
            string keybase = @"SYSTEM\ControlSet001\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\";

            for (int i = 0; i < 32; i++)
            {
                string key = String.Format("{0:0000}", i);
                Microsoft.Win32.RegistryKey hklm = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(keybase + key);

                if (hklm == null)
                {
                    break;
                }

                Trace.WriteLine("Video card {0} - {1} :", i, (string)hklm.GetValue("DriverDesc"));
                Trace.Indent();
                object obj = hklm.GetValue("OpenGLDriverName");
                if (obj != null)
                {
                    Trace.WriteLine("Driver name : {0}", ((string[])obj)[0]);
                }
                Trace.WriteLine("Driver version : {0}", (string)hklm.GetValue("DriverVersion"));

                string[] str  = ((string)hklm.GetValue("DriverDate")).Split('-');
                DateTime date = DateTime.Parse(str[1] + "-" + str[0] + "-" + str[2]);
                Trace.WriteLine("Driver date : {0}", date.ToLongDateString());
                Trace.Unindent();
            }

            Trace.WriteLine();
            Trace.WriteLine("OpenGL informations :");
            Trace.WriteLine("Graphics card vendor : {0}", Capabilities.VideoVendor);
            Trace.WriteLine("Renderer : {0}", Capabilities.VideoRenderer);
            Trace.WriteLine("OpenGL Version : {0}", Capabilities.VideoVersion);
            Trace.WriteLine("GLSL Version : {0}", Capabilities.ShadingLanguageVersion);

            Trace.WriteLine("Display modes");
            Trace.Indent();
            //foreach (OpenTK.DisplayDevice device in OpenTK.DisplayDevice.AvailableDisplays)
            foreach (OpenTK.DisplayIndex index in Enum.GetValues(typeof(OpenTK.DisplayIndex)))
            {
                OpenTK.DisplayDevice device = OpenTK.DisplayDevice.GetDisplay(index);
                if (device != null)
                {
                    Trace.WriteLine(device.ToString());
                }
            }
            Trace.Unindent();


            if (Capabilities.MajorVersion <= 2)
            {
                Trace.Write("Supported extensions ({0}) : ", Capabilities.Extensions.Count);
                foreach (string name in Capabilities.Extensions)
                {
                    Trace.Write("{0} ", name);
                }
            }
            else
            {
                int count = 0;
                TK.GL.GetInteger(TK.GetPName.NumExtensions, out count);
                Trace.Write("Supported extensions ({0}) : ", count);
                for (int i = 0; i < count; i++)
                {
                    Trace.Write("{0}, ", TK.GL.GetString(TK.StringName.Extensions, i));
                }
            }
            Trace.WriteLine();

            Trace.Unindent();
        }