Dandelion 2.0.0
A light-weight 3D builder for educational usage
载入中...
搜索中...
未找到
PreviewRenderer类 参考

用于实时预览的渲染器。 更多...

#include <preview_renderer.h>

Public 成员函数

 PreviewRenderer ()
void compile_shaders ()
void delete_shaders ()
void delete_drawable_resources ()
void render (Scene &scene, WorkingMode mode, const DebugOptions &debug_options)
 渲染一帧的画面。

Private 成员函数

void fill_drawable_mesh (const Mesh &mesh, GL::DrawableMesh &drawable_mesh)
void fill_drawable_lineset (const LineSet &lineset, GL::DrawableLineSet &drawable_lineset)
void update_drawable_meshes (Scene &scene)
void update_drawable_linesets (Scene &scene)
void render_selected_object (const Scene &scene, WorkingMode mode)

Private 属性

std::unique_ptr< Shaderprimitive_shader
std::unique_ptr< Shaderphong_shader
std::unordered_map< const Mesh *, std::unique_ptr< GL::DrawableMesh > > general_meshes
std::unordered_map< const LineSet *, std::unique_ptr< GL::DrawableLineSet > > general_linesets
std::unordered_map< const Mesh *, std::unique_ptr< GL::DrawableMesh > > overlay_meshes
std::unordered_map< const LineSet *, std::unique_ptr< GL::DrawableLineSet > > overlay_linesets
std::shared_ptr< spdlog::logger > logger

详细描述

用于实时预览的渲染器。

PreviewRenderer 在形式上与离线渲染器相似,但并不受 RenderEngine 的管理。

构造及析构函数说明

◆ PreviewRenderer()

PreviewRenderer::PreviewRenderer ( )

构造渲染器。因为 OpenGL shader 需要在 context 初始化之后再编译, 所以 shader 相关的初始化操作需要单独调用 compile_shaders 方法。

成员函数说明

◆ compile_shaders()

void PreviewRenderer::compile_shaders ( )

加载并编译编译 OpenGL shader 。

◆ delete_drawable_resources()

void PreviewRenderer::delete_drawable_resources ( )

释放所有使用了 OpenGL VAO/VBO/EBO 的可渲染对象。

◆ delete_shaders()

void PreviewRenderer::delete_shaders ( )

删除 OpenGL shader 。

◆ fill_drawable_lineset()

void PreviewRenderer::fill_drawable_lineset ( const LineSet & lineset,
GL::DrawableLineSet & drawable_lineset )
private

LineSet 对象中的几何数据同步到 GL::DrawableLineSet 中,并将数据传输到显存。 该方法不会重置 linesetmodified 脏标记。

参数
lineset数据源线条集
drawable_lineset要填充并传输到显存的渲染线条集

◆ fill_drawable_mesh()

void PreviewRenderer::fill_drawable_mesh ( const Mesh & mesh,
GL::DrawableMesh & drawable_mesh )
private

Mesh 对象中的几何数据同步到 GL::DrawableMesh 中,并将数据传输到显存。 该方法不会重置 meshmodified 脏标记。

参数
mesh数据源 Mesh
drawable_mesh要填充并传输到显存的渲染 Mesh

◆ render()

void PreviewRenderer::render ( Scene & scene,
WorkingMode mode,
const DebugOptions & debug_options )

渲染一帧的画面。

该方法会按需更新 GPU 数据、发起所有的 draw call ,但不会交换 back buffer 与 front buffer ,因此不会直接引发画面更新。

参数
scene渲染的场景
mode当前的工作模式,这决定了场景的渲染方式。
debug_options当前的调试选项,这决定了用于调试的特殊图元是否被渲染。

◆ render_selected_object()

void PreviewRenderer::render_selected_object ( const Scene & scene,
WorkingMode mode )
private

有物体被选中时,渲染这个物体的线框作为标记。

◆ update_drawable_linesets()

void PreviewRenderer::update_drawable_linesets ( Scene & scene)
private

将场景中所有的 LineSet 几何数据同步到 GL::DrawableLineSet

◆ update_drawable_meshes()

void PreviewRenderer::update_drawable_meshes ( Scene & scene)
private

将场景中所有的 Mesh 几何数据同步到 GL::DrawableMesh


该类的文档由以下文件生成: