This removes the old `DrawEngineType` and use the new `DrawEngine` virtual class instead. This removes a lot of boilerplate functions that were only there for legacy reason. To this end, some engines that were based on static functions have been refactored into `Instance` classes. This was particularly cumbersome for the Grease pencil engine which needed some more refactoring. The `Engine` class that is in each namespace is a workaround to isolate the internal implementation (i.e. the `Instance`) to the engine modules. Without this, the whole engine is getting included in each compile unit that includes the `Instance` class. Eventually, if we get rid of these intricate dependencies, we could remove the `Engine` class. Pull Request: https://projects.blender.org/blender/blender/pulls/136001
26 lines
451 B
C++
26 lines
451 B
C++
/* SPDX-FileCopyrightText: 2016 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/** \file
|
|
* \ingroup draw_engine
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "DRW_render.hh"
|
|
|
|
struct RenderEngineType;
|
|
|
|
extern RenderEngineType DRW_engine_viewport_workbench_type;
|
|
|
|
namespace blender::workbench {
|
|
|
|
struct Engine : public DrawEngine::Pointer {
|
|
DrawEngine *create_instance() final;
|
|
|
|
static void free_static();
|
|
};
|
|
|
|
} // namespace blender::workbench
|