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

这个类管理平台相关的窗口、配置信息以及应用启动的入口和事件循环。 更多...

#include <platform.h>

Public 成员函数

 Platform ()
 初始化 OpenGL Context、创建窗口、初始化 Dear ImGui、创建预览场景用的 shader。
 ~Platform ()
void eventloop ()
 事件循环主体。

Private 成员函数

double get_dpi () noexcept
void resize_window () noexcept
bool create_context (int major, int minor) noexcept
void set_opengl_properties () noexcept
bool init_ui ()

静态 Private 成员函数

static void on_framebuffer_resized (GLFWwindow *window, GLsizei width, GLsizei height)

Private 属性

std::shared_ptr< spdlog::logger > logger
GLFWwindow * window
double dpi
std::unique_ptr< Shadershader
int window_width
int window_height

静态 Private 属性

static constexpr float mouse_wheel_threshold = 1e-2f

详细描述

这个类管理平台相关的窗口、配置信息以及应用启动的入口和事件循环。

构造及析构函数说明

◆ Platform()

Platform::Platform ( )

初始化 OpenGL Context、创建窗口、初始化 Dear ImGui、创建预览场景用的 shader。

构造函数按照 4.6 -> 4.3 -> 3.3 的版本顺序尝试创建 OpenGL Context,若全部失败, 则程序终止直接退出(OpenGL 3.3 是使用 GLSL shader 的最低要求)。

OpenGL Context 创建成功后,构造函数加载 OpenGL API 并创建窗口,再探测用户显示器的 DPI 来决定程序的全局缩放比例。Dear ImGui 的初始化过程依赖于全局缩放。 最后,构造函数编译、链接渲染预览场景的 shader。

◆ ~Platform()

Platform::~Platform ( )

执行 OpenGL 销毁窗口的操作。

成员函数说明

◆ create_context()

bool Platform::create_context ( int major,
int minor )
privatenoexcept

创建 major.minor 版本的 OpenGL Context。

参数
majorOpenGL 主版本
minorOpenGL 次版本(小版本)
返回
创建是否成功

◆ eventloop()

void Platform::eventloop ( )

事件循环主体。

这是 GUI 的主循环,负责接收消息(输入)并转发给 Controller 对象。 此循环内的过程基本上是与平台 (OpenGL / GLFW) 相关的,平台无关的处理则移交 Controller。

◆ get_dpi()

double Platform::get_dpi ( )
privatenoexcept

检测显示器 DPI。

◆ init_ui()

bool Platform::init_ui ( )
private

初始化 Dear ImGui,加载字体、设置缩放和基础样式。

◆ on_framebuffer_resized()

void Platform::on_framebuffer_resized ( GLFWwindow * window,
GLsizei width,
GLsizei height )
staticprivate

处理窗口缩放的回调函数。

◆ resize_window()

void Platform::resize_window ( )
privatenoexcept

按 DPI 缩放窗口。

◆ set_opengl_properties()

void Platform::set_opengl_properties ( )
privatenoexcept

设置一些全局通用的 OpenGL 属性,例如开启深度测试等。

类成员变量说明

◆ dpi

double Platform::dpi
private

屏幕分辨率,实际是 PPI (Pixels Per Inch),称为 DPI 只是出于习惯。

◆ logger

std::shared_ptr<spdlog::logger> Platform::logger
private

持有的日志记录器。

◆ shader

std::unique_ptr<Shader> Platform::shader
private

用于实时渲染预览窗口的 OpenGL Shader 封装对象。

◆ window

GLFWwindow* Platform::window
private

窗口对象。

◆ window_height

int Platform::window_height
private

实时更新的窗口长宽。

◆ window_width

int Platform::window_width
private

实时更新的窗口长宽。


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