#include #include #include int main(int argc, char *argv[]) { InitGraphics(); return EXIT_SUCCESS; } BOOL InitGraphics() { static EGLint attribute_list[] = { EGL_NATIVE_VISUAL_ID, 0, EGL_NONE }; int status; gf_dev_t gfDev; gf_dev_info_t gfDevInfo; EGLDisplay display; gf_display_t gfDisplay; gf_display_info_t gfDisplayInfo; gf_layer_t gfLayer; gf_layer_info_t gfLayerInfo; status = gf_dev_attach(&gfDev, GF_DEVICE_INDEX(0), &gfDevInfo); if(status != GF_ERR_OK) { std::cout << "gf_dev_attach() failed, status = " << status << std::endl; return FALSE; } display = eglGetDisplay(gfDev); if(display == EGL_NO_DISPLAY) { std::cout << "eglGetDisplay() failed" << std::endl; return FALSE; } status = gf_display_attach(&gfDisplay, gfDev, 0, &gfDisplayInfo); if(status != GF_ERR_OK) { std::cout << "gf_display_attach() failed, status = " << status << std::endl; return FALSE; } status = gf_layer_attach(&gfLayer, gfDisplay, 0, 0); if(status != GF_ERR_OK) { std::cout << "gf_layer_attach() failed, status = " << status << std::endl; return FALSE; } int i; EGLConfig config; EGLint numConfig; for(i = 0; ; i++) { if(gf_layer_query(gfLayer, i, &gfLayerInfo) != GF_ERR_OK) { std::cout << "Couldn't find a compatible frame buffer configuration on layer" << std::endl; return FALSE; } attribute_list[1] = gfLayerInfo.format; if(eglChooseConfig(display, attribute_list, &config, 1, &numConfig) == EGL_TRUE) { if(numConfig > 0) { break; } } } //TODO: Create 3D target //TODO: Create Window Surface //TODO: Draw something return TRUE; }