#opengl #ui #graphics #gui #events

烛台窗口化

轻松处理一个或多个窗口

2个版本

0.2.1 2020年4月16日
0.2.0 2020年4月10日

#893图形API

每月 24次下载

Apache-2.0

41KB
577 代码行

烛台 - 窗口系统

亲爱的读者!如果您想要快速搭建一个具有一个或多个窗口的应用程序,并且完全使用Rust编写,那么这个包就是为您准备的!

这个包的设计初衷是与其他包(主要是luminance或candelabre-widgets)一起使用。目标是避免围绕glutin编写样板代码,而是让您可以玩转事件循环。只需包含一个 CandlSurface 和您需要的特质,您就可以开始了!使用OpenGL?更高级的nanovg/nvg?想要探索其他东西?现在您不需要使用sdl或glfw,也不需要深入glutin的内部。

免责声明

以下几点需要注意。

首先,这个项目最初是为了在旧计算机上创建应用程序而编写的,不支持vulkan,并且是跨平台的,所以它使用OpenGL,因为它是唯一能够实现完全跨平台和旧计算机兼容的途径。所以,不会提供vulkan支持,因为这并不是这个项目的目的。

其次,主要目标是处理窗口和小部件,而不是所有内容。事件循环完全由开发者自行决定,因为我相信正确处理一个事物比处理所有事物更好。所以,烛台窗口化只负责窗口处理,而不是整个应用程序。

最后,这个项目还没有结束,还有很多改进在路上。即使它已经足够稳定可以开始构建真实的应用程序(它已经完成了),这个包也会继续发展,主要关注状态部分。

积极开发中

在创建这个库的过程中,产生了一些关于如何改进的想法。当前版本已经稳定,但有一个方面我想深入研究。未来的发展将专注于 CandlSurfaceCandlManager 的内部数据容量。您不需要这些功能来使用这个库,只需记住我在努力改进它们。

CandlSurface

《CandlSurface》是本库中的第一个核心元素。它允许创建具有特定参数的窗口。给它一个模式(窗口或全屏),可选的大小和光标模式(可见或隐藏),然后我们就可以开始了!

请查看candelabre 示例以获取更多关于如何使用它的详细信息。

《CandlManager》

当您需要为您的应用程序创建多个窗口时,您需要多个OpenGL上下文,但管理它们既繁琐又容易出错。为了简化这项任务,`CandlManager`使得在不同OpenGL上下文之间切换变得简单。

您可以在candelabre 示例中找到一个`CandlManager`的示例。

注意:由于某些内部检查,您不能创建一个窗口并在之后将其添加到管理器中。您必须选择是否要进行多窗口操作,但请放心,从一个转换到另一个非常简单,如果仍然太不明确,请提出一个问题 ;-)。

依赖关系

~3–12MB
~140K SLoC