OpenTK.Platform.Egl.EglGraphicsMode.SelectGraphicsMode C# (CSharp) Метод

SelectGraphicsMode() публичный Метод

public SelectGraphicsMode ( ColorFormat color, int depth, int stencil, int samples, ColorFormat accum, int buffers, bool stereo ) : OpenTK.Graphics.GraphicsMode
color OpenTK.Graphics.ColorFormat
depth int
stencil int
samples int
accum OpenTK.Graphics.ColorFormat
buffers int
stereo bool
Результат OpenTK.Graphics.GraphicsMode
        public GraphicsMode SelectGraphicsMode(
            ColorFormat color, int depth,
            int stencil,
            int samples,
            ColorFormat accum,
            int buffers,
            bool stereo)
        {
            IntPtr[] configs = new IntPtr[1];
            int[] attribList = new int[]
            { 
                //Egl.SURFACE_TYPE, Egl.WINDOW_BIT,

                Egl.RED_SIZE, color.Red,
                Egl.GREEN_SIZE, color.Green,
                Egl.BLUE_SIZE, color.Blue,
                Egl.ALPHA_SIZE, color.Alpha,
                Egl.DEPTH_SIZE, depth > 0 ? depth : 0,
                Egl.STENCIL_SIZE, stencil > 0 ? stencil : 0,
                //Egl.SAMPLE_BUFFERS, samples > 0 ? 1 : 0,
                Egl.SAMPLES, samples > 0 ? samples : 0, 
                //------------
                Egl.NONE,
            };

            IntPtr display = window.Display;
            int num_configs;
            if (!Egl.GetConfigs(display, null, 0, out num_configs))
            {
                throw new GraphicsModeException(String.Format("Failed to retrieve GraphicsMode configurations, error {0}", Egl.GetError()));
            }


            if (!Egl.ChooseConfig(display, attribList, configs, configs.Length, out num_configs))
            {
                throw new GraphicsModeException(String.Format("Failed to retrieve GraphicsMode, error {0}", Egl.GetError()));
            }

            // See what we really got
            IntPtr active_config = configs[0];
            int r, g, b, a;
            Egl.GetConfigAttrib(display, active_config, Egl.RED_SIZE, out r);
            Egl.GetConfigAttrib(display, active_config, Egl.GREEN_SIZE, out g);
            Egl.GetConfigAttrib(display, active_config, Egl.BLUE_SIZE, out b);
            Egl.GetConfigAttrib(display, active_config, Egl.ALPHA_SIZE, out a);
            int d, s;
            Egl.GetConfigAttrib(display, active_config, Egl.DEPTH_SIZE, out d);
            Egl.GetConfigAttrib(display, active_config, Egl.STENCIL_SIZE, out s);
            int sample_buffers;
            Egl.GetConfigAttrib(display, active_config, Egl.SAMPLES, out sample_buffers);
            Egl.GetConfigAttrib(display, active_config, Egl.SAMPLES, out samples);
            return new GraphicsMode(active_config, new ColorFormat(r, g, b, a), d, s, sample_buffers > 0 ? samples : 0, 0, 2, false);

        }

Usage Example

Пример #1
0
        bool vsync = true;   // Default vsync value is defined as 1 (true) in EGL.
        #endregion

        #region Constructors

        public EglContext(GraphicsMode mode, EglWindowInfo window, IGraphicsContext sharedContext,
            int major, int minor, GraphicsContextFlags flags)
        {
            if (mode == null)
                throw new ArgumentNullException("mode");
            if (window == null)
                throw new ArgumentNullException("window");
            EglContext shared = (EglContext)sharedContext;
            int dummy_major, dummy_minor;
            if (!Egl.Initialize(window.Display, out dummy_major, out dummy_minor))
                throw new GraphicsContextException(String.Format("Failed to initialize EGL, error {0}.", Egl.GetError()));
            WindowInfo = window;

            Egl.BindAPI(0x30A0); //bind EGL_OPENGL_ES_API

            var eglGfxMode = new EglGraphicsMode();
            eglGfxMode.window = window;
            Mode = eglGfxMode.SelectGraphicsMode(mode.ColorFormat, mode.Depth, mode.Stencil, mode.Samples, mode.AccumulatorFormat, mode.Buffers, mode.Stereo);
            if (!Mode.Index.HasValue)
                throw new GraphicsModeException("Invalid or unsupported GraphicsMode.");
            IntPtr config = Mode.Index.Value;
            if (window.Surface == IntPtr.Zero)
                window.CreateWindowSurface(config);
            int[] attrib_list = new int[] { 
                //key,value
                Egl.CONTEXT_CLIENT_VERSION, major,
                Egl.NONE };
            HandleAsEGLContext = Egl.CreateContext(window.Display, config, shared != null ? shared.HandleAsEGLContext : IntPtr.Zero, attrib_list);
            MakeCurrent(window);
        }
All Usage Examples Of OpenTK.Platform.Egl.EglGraphicsMode::SelectGraphicsMode
EglGraphicsMode