实现一个游戏框架。
架构是C/C++,渲染用DirectX,库用STL/ATL。
从易到难,逐步推进。
使用的开源项目:
- libqrencode-3.4.4
- libevent-2.0.22
- libcurl-7.53.1
- dkjson(lua)
项目架构:
- base - 基础类(包含二维码库、libevent、libcurl)
- ui - 界面逻辑
- render - DX渲染逻辑
- lua - lua代码
- lua_ext - lua扩展(UI、Web)
- script - lua脚本(UI、Scene)
整体思路:
- 将窗口包装成Window类,借鉴自MFC中的相关内容
- D2D1和DWrite的初始化
- 实现图元工厂模式,统一管理DX资源,已实现色块和文字的渲染
- 截取Window的特定消息,进行渲染
当前进度:
- 已整合Lua 5.3.3
- 实现背景渐变的效果
- 实现定时器功能
- 监听窗口消息
- 实现场景切换功能
- 实现绝对布局,可以自动调整大小
- 整合WIC图片工厂模块
- 整合二维码模块(libqrencode)
- 监听鼠标事件
- 添加线性布局
- 添加按钮控件
- 添加文本框控件
- 添加表格布局
- 添加HTTP组件,整合libevent和libcurl
- 添加图片控件,接收base64编码的图片二进制指针
- 添加lua版本的json解析
- 完善HTTP组件(GET,POST)
- 添加音频播放组件(libzplay)
TODO:
- 完善一言界面
- 添加更多控件
- 添加更多渲染图元
- 游戏
- 贪吃蛇
- 2048(已完成)
- 俄罗斯方块
- 工具
- 计算器(计划中)
- JSON校验器
- 网络
- 一言(已完成)
- 网易云音乐播放器(制作中)
- 算法可视化
- A*寻路(已完成)
- Wireworld 元胞自动机(已完成)
- 光线追踪(进行中)
- 用JavaScript玩转计算机图形学(一)光线追踪入门 - Milo Yip (已完成)
- 用JavaScript玩转计算机图形学(二)基本光源 - Milo Yip (已完成)
- 用 C 语言画光(一):基础 (已完成)
- 用 C 语言画光(二):构造实体几何 (已完成)
- 用 C 语言画光(三):形状 (已完成)
- 用 C 语言画光(四):反射 (已完成)
主界面
画光系列!!!(算法优化)
光线追踪入门
1. 渐变
2. 深度
3. 材质
4. 反射
基本光源
1. 平行光
1. 平行光(带阴影)
2. 点光源(带阴影)
3. 聚光灯(带阴影)
4. 三原色(带阴影)
画光系列
(采用动态刷新法)
1. 抖动采样
2. 实体几何
3. 反射
画光系列(彩色)
1. 实体几何
2. 反射
3. 三原色
4. 折射
5. 折射(菲涅耳方程)
6. 折射(比尔-朗伯定律)
画光系列(文字)