public static extern bool SwapBuffers(EGLDisplay dpy, EGLSurface surface);
public static extern bool DestroySurface(EGLDisplay dpy, EGLSurface surface);
public static extern bool SurfaceAttrib(EGLDisplay dpy, EGLSurface surface, int attribute, int value);
public static EGLContext CreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, int[] attrib_list) { IntPtr ptr = eglCreateContext(dpy, config, share_context, attrib_list); if (ptr == IntPtr.Zero) throw new GraphicsContextException(String.Format("Failed to create EGL context, error: {0}.", Egl.GetError())); return ptr; }
public static extern bool ChooseConfig(EGLDisplay dpy, int[] attrib_list, [In, Out] EGLConfig[] configs, int config_size, out int num_config);
public static extern EGLSurface CreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, int[] attrib_list);
public static extern EGLSurface CreatePlatformWindowSurfaceEXT(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType native_window, int[] attrib_list);
//[return: MarshalAsAttribute(UnmanagedType.I1)] public static extern bool Initialize(EGLDisplay dpy, out int major, out int minor);
public GraphicsMode SelectGraphicsMode(ColorFormat color, int depth, int stencil, int samples, ColorFormat accum, int buffers, bool stereo) { EGLConfig[] configs = new EGLConfig[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, }; // Todo: what if we don't wish to use the default display? EGLDisplay display = Egl.GetDisplay(EGLNativeDisplayType.Default); int major, minor; if (!Egl.Initialize(display, out major, out minor)) { throw new GraphicsModeException(String.Format("Failed to initialize display connection, error {0}", Egl.GetError())); } 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 EGLConfig 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.Handle.Value, new ColorFormat(r, g, b, a), d, s, sample_buffers > 0 ? samples : 0, 0, 2, false)); }
public static extern bool QuerySurfacePointerANGLE(EGLDisplay display, EGLSurface surface, int attribute, out IntPtr value);
public EglWindowInfo(IntPtr handle, EGLDisplay display, EGLSurface surface) { Handle = handle; Display = display; Surface = surface; }
public EglWindowInfo(IntPtr handle, EGLDisplay display) { Handle = handle; Display = display; }
public static extern EGLSurface CreatePlatformPixmapSurfaceEXT(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType native_pixmap, int[] attrib_list);
public static extern EGLSurface CreatePbufferFromClientBuffer(EGLDisplay dpy, int buftype, EGLClientBuffer buffer, EGLConfig config, int[] attrib_list);
public static extern bool ReleaseTexImage(EGLDisplay dpy, EGLSurface surface, int buffer);
public static extern IntPtr QueryString(EGLDisplay dpy, int name);
public static extern EGLSurface CreateWindowSurface(EGLDisplay dpy, EGLConfig config, IntPtr win, int[] attrib_list);
static extern IntPtr eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, IntPtr win, int[] attrib_list);
public static extern bool QuerySurface(EGLDisplay dpy, EGLSurface surface, int attribute, out int value);
static extern IntPtr eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, int[] attrib_list);
public static extern bool SwapInterval(EGLDisplay dpy, int interval);
public static extern bool DestroyContext(EGLDisplay dpy, EGLContext ctx);
public static extern bool MakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx);
public static extern bool QueryContext(EGLDisplay dpy, EGLContext ctx, int attribute, out int value);
public static extern bool CopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target);
public static EGLDisplay GetDisplay(EGLNativeDisplayType display_id) { IntPtr ptr = eglGetDisplay(display_id); EGLDisplay ret = new EGLDisplay(ptr); return ret; }
//[return: MarshalAsAttribute(UnmanagedType.I1)] public static extern bool Terminate(EGLDisplay dpy);
public static EGLSurface CreateWindowSurface(EGLDisplay dpy, EGLConfig config, IntPtr win, int[] attrib_list) { IntPtr ptr = eglCreateWindowSurface(dpy, config, win, attrib_list); EGLSurface ret = new EGLSurface(ptr); return ret; }
public static extern bool GetConfigs(EGLDisplay dpy, EGLConfig[] configs, int config_size, out int num_config);
public static extern bool GetConfigAttrib(EGLDisplay dpy, EGLConfig config, int attribute, out int value);
public static extern EGLSurface CreatePbufferSurface(EGLDisplay dpy, EGLConfig config, int[] attrib_list);
public static extern EGLSurface CreateWindowSurface(EGLDisplay dpy, EGLConfig config, IntPtr win, IntPtr attrib_list);