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

这个类管理平台相关的窗口和配置信息。 更多...

#include <platform.h>

Public 成员函数

 Platform ()
 初始化 OpenGL Context、创建窗口、初始化 Dear ImGui、创建预览场景用的 shader。
 
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
 
int window_width
 
int window_height
 
double dpi
 
std::unique_ptr< Shadershader
 

静态 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。

成员函数说明

◆ 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,加载字体、设置缩放和基础样式。

◆ resize_window()

void Platform::resize_window ( )
privatenoexcept

按 DPI 缩放窗口。

◆ set_opengl_properties()

void Platform::set_opengl_properties ( )
privatenoexcept

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


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