摘要: 为什么重构 Simple2D 开始的时候打算使用几周的时间来实现 Simple2D 的,主要是实现一些简单的 2D 渲染功能。但是编写的过程中不满于它只能实现简单的功能,后来添加了诸如Alpha测试、深度测试、裁剪测试、模板测试、混合等功能,为了实现这些实现了一个 Pass 类。 除了这些,我还希望 阅读全文
posted @ 2017-08-31 15:17 为了邮箱5 阅读(762) 评论(0) 推荐(1) 编辑
摘要: 使用 BASS 和 ImGui 实现音乐播放器 MusicPlayer。 将播放器和一个文件夹关联起来,程序刚开始运行的时候就从该文件夹加载所有音频文件。而文件夹的路径则保存在配置文件中,所以程序的第一步就是读取配置文件。 1、读取配置文件 配置文件以 XML 格式进行储存,使用 TinyXml 库 阅读全文
posted @ 2017-07-25 20:27 为了邮箱5 阅读(2301) 评论(2) 推荐(0) 编辑
摘要: BASS 简介 BASS是一个在多个平台上用于软件的音频库。其目的是为开发人员提供功能强大且高效的示例流(MP3,MP2,MP1,OGG,WAV,AIFF),MOD 音乐(XM,IT,S3M,MOD ,MTM,UMX),MO3 音乐(MP3 / OGG压缩MOD)和录音功能。提供了 C / C ++ 阅读全文
posted @ 2017-07-25 00:11 为了邮箱5 阅读(2664) 评论(0) 推荐(0) 编辑
摘要: 要把 ImGui 应用到项目中,先拷贝方框中的源文件到项目: 这些文件是 ImGui 的实现源码,可作为第三方库新建一个文件夹进行放置。 接下来是渲染部分的代码,项目可能使用 DirectX 或 OpenGL 进行渲染。Simple2D 使用的是 OpenGL3,所以打开 examples -> o 阅读全文
posted @ 2017-07-24 18:00 为了邮箱5 阅读(1555) 评论(0) 推荐(0) 编辑
摘要: 什么是 ImGui IMGUI (Immediate Mode Graphical User interface),下载地址。 ImGui 是一种比较新颖的 GUI 实现模式,适用于显示区域实时刷新的程序里面。在 Simple2D 上实现 GUI,如果要自己编写一个 GUI 库,这是一件很困难的事。 阅读全文
posted @ 2017-07-23 22:22 为了邮箱5 阅读(9473) 评论(0) 推荐(1) 编辑
摘要: glfw 是一个专门针对 OpenGL 的 C 语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建 OpenGL 上下文,定义窗口参数以及处理用户输入。 这次打算使用 GLFW 替代掉 Simple2D 的那个简陋的 RenderWindow,以便简单地实现更多的功能,也是为了使用 I 阅读全文
posted @ 2017-07-23 11:34 为了邮箱5 阅读(1119) 评论(0) 推荐(0) 编辑
摘要: 接下来文章中,会介绍一个简单的程序——音乐播放器。通过编写一个音乐播放器在 Simple2D 中加入两个库:音频库 bass 和界面库 ImGui。 下面是音乐播放器的预览图: 播放器的功能比较简单,音频播放使用了 bass 库,界面则是使用 ImGui 库。 阅读全文
posted @ 2017-07-23 00:37 为了邮箱5 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 要实现 Signal-Slot,Signal 类中应该拥有一个保存 std::function 的数组: 接下来将会按照下图中可能出现的问题设计 Signal-Slot: 1、当对象 A 被摧毁时,funcA 应该自动从 vector 中移除。 要实现自动管理操作,最好的方式是使用 C++ 的智能指 阅读全文
posted @ 2017-07-11 14:30 为了邮箱5 阅读(2423) 评论(1) 推荐(0) 编辑
摘要: 了解 QT 的应该知道,QT 有一个信号槽 Singla-Slot 这样的东西。信号槽是 QT 的核心机制,用来替代函数指针,将不相关的对象绑定在一起,实现对象间的通信。 考虑为 Simple2D 添加一个类似的信号槽,实现对象间的通信。当然,功能比较简单,不过对于 Simple2D 就足够了。最终 阅读全文
posted @ 2017-07-11 14:29 为了邮箱5 阅读(2615) 评论(1) 推荐(0) 编辑
摘要: 这是重构渲染器的最后一部分了,将会给出一个 demo,测试模板测试、裁剪测试、半透明排序等等: 上图是本次 demo 的效果图,中间的绿色图形展现的是模板测试。 模板测试 使用模板测试需要两个 Pass,第一个 Pass 绘制圆的时候,把圆范围内的模板值设置为 1,。在时候 p1 绘制好圆后,再使用 阅读全文
posted @ 2017-07-03 18:59 为了邮箱5 阅读(853) 评论(0) 推荐(0) 编辑