コード例 #1
0
ファイル: wegl_display.c プロジェクト: dumbbell/waffle
bool
wegl_display_supports_context_api(struct wcore_display *wc_dpy,
                                  int32_t waffle_context_api)
{
    struct wegl_display *dpy = wegl_display(wc_dpy);
    struct wcore_platform *wc_plat = dpy->wcore.platform;
    int32_t waffle_dl;

    switch (waffle_context_api) {
        case WAFFLE_CONTEXT_OPENGL:
            waffle_dl = WAFFLE_DL_OPENGL;
            break;
        case WAFFLE_CONTEXT_OPENGL_ES1:
            waffle_dl = WAFFLE_DL_OPENGL_ES1;
            break;
        case WAFFLE_CONTEXT_OPENGL_ES2:
            waffle_dl = WAFFLE_DL_OPENGL_ES2;
            break;
        case WAFFLE_CONTEXT_OPENGL_ES3:
            if (!dpy->KHR_create_context)
                return false;

            waffle_dl = WAFFLE_DL_OPENGL_ES3;
            break;
        default:
            wcore_error_internal("waffle_context_api has bad value %#x",
                                 waffle_context_api);
            return false;
    }

    return wc_plat->vtbl->dl_can_open(wc_plat, waffle_dl);
}
コード例 #2
0
ファイル: wegl_util.c プロジェクト: Jul13t/waffle
bool
wegl_make_current(struct wcore_platform *wc_plat,
                  struct wcore_display *wc_dpy,
                  struct wcore_window *wc_window,
                  struct wcore_context *wc_ctx)
{
    struct wegl_platform *plat = wegl_platform(wc_plat);
    EGLSurface surface = wc_window ? wegl_window(wc_window)->egl : NULL;
    bool ok;

    ok = plat->eglMakeCurrent(wegl_display(wc_dpy)->egl,
                              surface,
                              surface,
                              wc_ctx
                                  ? wegl_context(wc_ctx)->egl
                                  : NULL);
    if (!ok)
        wegl_emit_error(plat, "eglMakeCurrent");

    return ok;
}