Route viewer through dynamic backend in experimental builds
This commit is contained in:
@@ -25,6 +25,9 @@
|
|||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
|
||||||
#include "panel/panelmanager.h"
|
#include "panel/panelmanager.h"
|
||||||
|
#ifdef OAK_ENABLE_DYNAMIC_RENDER_BACKEND
|
||||||
|
#include "render/backend/dynamicrenderer.h"
|
||||||
|
#endif
|
||||||
#include "render/opengl/openglrenderer.h"
|
#include "render/opengl/openglrenderer.h"
|
||||||
#include "render/rendermanager.h"
|
#include "render/rendermanager.h"
|
||||||
|
|
||||||
@@ -61,8 +64,15 @@ ManagedDisplayWidget::ManagedDisplayWidget(QWidget *parent)
|
|||||||
|
|
||||||
inner_widget_->installEventFilter(this);
|
inner_widget_->installEventFilter(this);
|
||||||
|
|
||||||
// Create OpenGL renderer
|
// Create renderer bound to the widget's OpenGL context.
|
||||||
|
#ifdef OAK_ENABLE_DYNAMIC_RENDER_BACKEND
|
||||||
|
attached_renderer_ = new DynamicRenderer(
|
||||||
|
RenderManager::BackendToString(
|
||||||
|
RenderManager::instance()->requested_backend()),
|
||||||
|
this);
|
||||||
|
#else
|
||||||
attached_renderer_ = new OpenGLRenderer(this);
|
attached_renderer_ = new OpenGLRenderer(this);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Create widget wrapper for OpenGL window
|
// Create widget wrapper for OpenGL window
|
||||||
#ifdef USE_QOPENGLWINDOW
|
#ifdef USE_QOPENGLWINDOW
|
||||||
@@ -244,6 +254,14 @@ void ManagedDisplayWidget::OnInit()
|
|||||||
if (RenderManager::instance()->backend() == RenderManager::kOpenGL) {
|
if (RenderManager::instance()->backend() == RenderManager::kOpenGL) {
|
||||||
QOpenGLContext *context =
|
QOpenGLContext *context =
|
||||||
static_cast<ManagedDisplayWidgetOpenGL *>(inner_widget_)->context();
|
static_cast<ManagedDisplayWidgetOpenGL *>(inner_widget_)->context();
|
||||||
|
#ifdef OAK_ENABLE_DYNAMIC_RENDER_BACKEND
|
||||||
|
if (auto *dynamic_renderer =
|
||||||
|
dynamic_cast<DynamicRenderer *>(attached_renderer_)) {
|
||||||
|
dynamic_renderer->InitWithOpenGLContext(context);
|
||||||
|
dynamic_renderer->PostInit();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
static_cast<OpenGLRenderer *>(attached_renderer_)->Init(context);
|
static_cast<OpenGLRenderer *>(attached_renderer_)->Init(context);
|
||||||
static_cast<OpenGLRenderer *>(attached_renderer_)->PostInit();
|
static_cast<OpenGLRenderer *>(attached_renderer_)->PostInit();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,6 +77,7 @@
|
|||||||
## 阶段 4:Viewer 双后端
|
## 阶段 4:Viewer 双后端
|
||||||
|
|
||||||
- 当前 viewer display 基于 OpenGL widget 和 GL texture id。
|
- 当前 viewer display 基于 OpenGL widget 和 GL texture id。
|
||||||
|
- 已在 `OAK_ENABLE_DYNAMIC_RENDER_BACKEND=ON` 实验构建下让 Viewer 的 managed display 使用 `DynamicRenderer` 创建 renderer,并把现有 `QOpenGLContext` 传入动态后端;默认构建仍直接使用 `OpenGLRenderer`。
|
||||||
- 新增 backend-neutral viewer path。
|
- 新增 backend-neutral viewer path。
|
||||||
- OpenGL 使用现有 `QOpenGLWidget/QOpenGLWindow`。
|
- OpenGL 使用现有 `QOpenGLWidget/QOpenGLWindow`。
|
||||||
- Vulkan 使用 `QVulkanWindow` 或 Qt RHI/QRhi 显示路径。
|
- Vulkan 使用 `QVulkanWindow` 或 Qt RHI/QRhi 显示路径。
|
||||||
|
|||||||
Reference in New Issue
Block a user