void init(void) { int i; int waffle_init_attrib_list[3]; i = 0; waffle_init_attrib_list[i++] = WAFFLE_PLATFORM; waffle_init_attrib_list[i++] = #if defined(__ANDROID__) WAFFLE_PLATFORM_ANDROID #elif defined(__APPLE__) WAFFLE_PLATFORM_CGL #elif defined(HAVE_X11) # if 1 WAFFLE_PLATFORM_GLX # else WAFFLE_PLATFORM_X11_EGL # endif #else # warning Unsupported platform WAFFLE_NONE #endif ; waffle_init_attrib_list[i++] = WAFFLE_NONE; waffle_init(waffle_init_attrib_list); dpy = waffle_display_connect(NULL); if (!dpy) { os::log("%s: waffle_display_connect(NULL) == NULL\n", __FILE__); os::abort(); } }
void init(void) { int32_t waffle_platform;; #if defined(__ANDROID__) waffle_platform = WAFFLE_PLATFORM_ANDROID; #elif defined(__APPLE__) waffle_platform = WAFFLE_PLATFORM_CGL #elif defined(_WIN32) waffle_platform = WAFFLE_PLATFORM_WGL #else waffle_platform = WAFFLE_PLATFORM_GLX; const char *waffle_platform_name = getenv("WAFFLE_PLATFORM"); if (waffle_platform_name) { if (strcmp(waffle_platform_name, "gbm") == 0) { waffle_platform = WAFFLE_PLATFORM_GBM; } else if (strcmp(waffle_platform_name, "glx") == 0) { waffle_platform = WAFFLE_PLATFORM_GLX; } else if (strcmp(waffle_platform_name, "wayland") == 0) { waffle_platform = WAFFLE_PLATFORM_WAYLAND; } else if (strcmp(waffle_platform_name, "x11_egl") == 0) { waffle_platform = WAFFLE_PLATFORM_X11_EGL; } else { std::cerr << "error: unsupported WAFFLE_PLATFORM \"" << waffle_platform_name << "\"\n"; exit(1); } } #endif Attributes<int32_t> waffle_init_attrib_list; waffle_init_attrib_list.add(WAFFLE_PLATFORM, waffle_platform); waffle_init_attrib_list.end(WAFFLE_NONE); waffle_init(waffle_init_attrib_list); dpy = waffle_display_connect(NULL); if (!dpy) { std::cerr << "error: waffle_display_connect failed\n"; exit(1); } }
void make_context() { /* Generate a context */ struct waffle_display *dpy; struct waffle_config *config; struct waffle_window *window; struct waffle_context *ctx; const int32_t init_attrs[] = { WAFFLE_PLATFORM, WAFFLE_PLATFORM_X11_EGL, 0, }; const int32_t config_attrs[] = { WAFFLE_CONTEXT_API, WAFFLE_CONTEXT_OPENGL_ES2, WAFFLE_RED_SIZE, 8, WAFFLE_BLUE_SIZE, 8, WAFFLE_GREEN_SIZE, 8, 0, }; const int32_t window_width = 320; const int32_t window_height = 240; waffle_init(init_attrs); dpy = waffle_display_connect(NULL); // Exit if OpenGL ES2 is unsupported. if (!waffle_display_supports_context_api(dpy, WAFFLE_CONTEXT_OPENGL_ES2) || !waffle_dl_can_open(WAFFLE_DL_OPENGL_ES2)) { exit(EXIT_FAILURE); } config = waffle_config_choose(dpy, config_attrs); window = waffle_window_create(config, window_width, window_height); ctx = waffle_context_create(config, NULL); waffle_make_current(dpy, window, ctx); }