// Create a new renderer based on a registered id and store it in the map. GPU_Renderer* gpu_create_and_add_renderer(GPU_RendererID id) { int i; for(i = 0; i < GPU_MAX_ACTIVE_RENDERERS; i++) { if(_gpu_renderer_map[i] == NULL) { // Create GPU_Renderer* renderer = GPU_CreateRenderer(id); if(renderer == NULL) { GPU_PushErrorCode(__func__, GPU_ERROR_BACKEND_ERROR, "Failed to create new renderer."); return NULL; } // Add _gpu_renderer_map[i] = renderer; // Return return renderer; } } GPU_PushErrorCode(__func__, GPU_ERROR_BACKEND_ERROR, "Couldn't create a new renderer. Too many active renderers for GPU_MAX_ACTIVE_RENDERERS (%d).", GPU_MAX_ACTIVE_RENDERERS); return NULL; }
// Create a new renderer based on a registered id and store it in the map. GPU_Renderer* GPU_AddRenderer(GPU_RendererID id) { int i; for(i = 0; i < MAX_ACTIVE_RENDERERS; i++) { if(rendererMap[i] == NULL) { // Create GPU_Renderer* renderer = GPU_CreateRenderer(id); if(renderer == NULL) { GPU_PushErrorCode(__func__, GPU_ERROR_BACKEND_ERROR, "Failed to create new renderer."); return NULL; } // Add rendererMap[i] = renderer; renderer->id.index = i; // Return return renderer; } } return NULL; }