// 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;
}
Beispiel #2
0
// 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;
}