void gpu_init_renderer_register(void) { int i; if(_gpu_renderer_register_is_initialized) return; for(i = 0; i < GPU_MAX_REGISTERED_RENDERERS; i++) { _gpu_renderer_register[i].id.name = "Unknown"; _gpu_renderer_register[i].id.renderer = GPU_RENDERER_UNKNOWN; _gpu_renderer_register[i].createFn = NULL; _gpu_renderer_register[i].freeFn = NULL; } for(i = 0; i < GPU_MAX_ACTIVE_RENDERERS; i++) { _gpu_renderer_map[i] = NULL; } GPU_GetDefaultRendererOrder(&_gpu_renderer_order_size, _gpu_renderer_order); _gpu_renderer_register_is_initialized = 1; gpu_register_built_in_renderers(); }
void GPU_InitRendererRegister(void) { int i; if(initialized) return; for(i = 0; i < MAX_REGISTERED_RENDERERS; i++) { rendererRegister[i].id.id = GPU_RENDERER_UNKNOWN; rendererRegister[i].id.index = i; rendererRegister[i].createFn = NULL; rendererRegister[i].freeFn = NULL; } for(i = 0; i < MAX_ACTIVE_RENDERERS; i++) { rendererMap[i] = NULL; } GPU_GetDefaultRendererOrder(&renderer_order_size, renderer_order); initialized = 1; GPU_RegisterRenderers(); }
void GPU_SetRendererOrder(int order_size, GPU_RendererID* order) { if(order == NULL) { // Restore the default order int count = 0; GPU_RendererID default_order[GPU_RENDERER_ORDER_MAX]; GPU_GetDefaultRendererOrder(&count, default_order); GPU_SetRendererOrder(count, default_order); // Call us again with the default order return; } if(order_size <= 0) return; if(order_size > GPU_RENDERER_ORDER_MAX) { GPU_PushErrorCode(__func__, GPU_ERROR_USER_ERROR, "Given order_size (%d) is greater than GPU_RENDERER_ORDER_MAX (%d)", order_size, GPU_RENDERER_ORDER_MAX); order_size = GPU_RENDERER_ORDER_MAX; } memcpy(_gpu_renderer_order, order, order_size*sizeof(GPU_RendererID)); _gpu_renderer_order_size = order_size; }