Skip to content
gamecat6688Public

About

基于 C++ 和 OpenGL ES 2.0 的轻量级二维游戏引擎原型,支持 Windows 窗口管理、着色器、纹理加载与二维渲染。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

easy2d

easy2d 是一个使用 C++ 和 OpenGL ES 2.0 编写的二维游戏引擎原型,包含 Windows 窗口管理、着色器、纹理加载和二维正交投影,以及一个用于验证渲染效果的示例程序。

项目保留 Visual Studio 2008 工程和早期依赖配置。当前主要实现面向 Windows / Win32;运行前需要准备图形 SDK 和示例资源,尚未提供完整的跨平台构建流程。

功能与实现状态

模块 当前内容
应用管理 Windows 窗口、消息循环、应用回调、标题与尺寸管理
GLES2 渲染 EGL 上下文、视口、清屏、缓冲区交换与四边形绘制
着色器 编译与链接 GLSL 程序、顶点属性、标量和矩阵参数
纹理 使用 FreeImage 读取图片、创建纹理、绑定纹理单元和透明混合
二维变换 使用 kazmath 计算正交投影及模型视图矩阵
核心事件 基础事件类型与对象
音频、输入、D3D9 接口或目录占位,尚未完整实现
Android、iOS 预留目录,尚无完整平台实现与构建工程

目录结构

engine/
  application/          应用接口与 Windows 窗口实现
  core/                 基础事件模型
  video/                渲染接口、GLES2 实现与数学相关代码
  audio/、input/        音频与输入模块框架
  platform/             平台扩展占位
  third_party/win32/    图形 SDK 压缩包、FreeImage、kazmath
samples/easy2d_test/     Windows 渲染示例源码
build/vs2008/           Visual Studio 2008 解决方案及工程
  bin/res/              示例纹理与 GLSL 着色器
docs/、tools/           文档与工具占位目录
premake4.lua            历史工程生成脚本
AGENTS.md               贡献与开发约定
LICENSE                 Apache 2.0 许可证

build/vs2008/ 中包含受版本控制的工程和资源,不应将整个目录视为可删除的构建缓存。

环境与依赖

  • Windows,以及安装了 C++ 工具链的 Visual Studio 2008。
  • 使用 Win32 配置,并确保依赖库和运行时 DLL 的架构、版本匹配。
  • 一套可用于 Windows 的 EGL / OpenGL ES 2.0 SDK。
  • FreeImage 和 kazmath;仓库已包含其头文件和库,FreeImage 另有运行时 DLL。

图形 SDK 的历史压缩包位于:

engine/third_party/win32/amd_es2/amd_lib.rar
engine/third_party/win32/arm_es2/arm_lib.rar

选择一套兼容 SDK,解压并检查其内容,按工程引用路径准备依赖,避免混用不同 SDK 的头文件、库和 DLL:

文件 工程期望位置
EGL/、GLES2/ 及 SDK 所需的公共头文件目录 engine/third_party/win32/include/
libEGL.lib、libGLESv2.lib engine/third_party/win32/lib/
SDK 对应的运行时 DLL、FreeImage.dll 可执行文件所在目录,或系统可搜索到的 PATH 目录

FreeImage.dll 的仓库位置为 engine/third_party/win32/bin/FreeImage.dll。此目录不会自动成为运行时 DLL 搜索路径。

构建

优先打开已有的 build/vs2008/easy2d.sln,选择 Debug | Win32,先构建 application、video,再构建 easy2d_test。示例链接 application_d.lib 和 video_d.lib,显式按此顺序构建可避免依赖顺序问题。

也可以在已配置 VS2008 工具链的命令环境中,从仓库根目录执行:

devenv build\vs2008\easy2d.sln /Build "Debug|Win32" /Project application
devenv build\vs2008\easy2d.sln /Build "Debug|Win32" /Project video
devenv build\vs2008\easy2d.sln /Build "Debug|Win32" /Project easy2d_test

按现有 Debug 配置,引擎静态库输出到 engine/lib/,示例输出到 build/vs2008/bin/easy2d_test_d.exe。

解决方案也包含 Release 配置,但其包含目录、链接依赖与输出位置不完全等同于 Debug;使用前需要单独检查。

关于 Premake

generate_vs2008.txt 记录了历史命令 premake4.exe vs2008。当前 premake4.lua 仍引用 easy2d/*.cpp、3Party/glew-1.9.0 和 DXSDK_DIR 等旧配置,与现有模块结构不一致。修正脚本前,不要依靠它重新生成或覆盖已提交的工程。

运行示例

  1. 准备匹配的 EGL、GLES2 和 FreeImage 运行时 DLL。
  2. 检查 samples/easy2d_test/easy2d_test.cpp 中 onLaunch() 的图片路径:当前两张中文文件名的 TGA 图片未随仓库提供。需补齐对应图片,或将加载路径调整为已有的 res/test.tga、res/item.tga 等资源后重新构建;替换图片会改变演示效果。
  3. 将工作目录设为 build/vs2008/bin/,确保程序可以读取 res/default.vert、res/default.frag 和纹理文件。

在仓库根目录使用 PowerShell 运行:

Push-Location build\vs2008\bin
.\easy2d_test_d.exe
Pop-Location

通过 Visual Studio 启动时,将 easy2d_test 设为启动项目,并将调试工作目录设为 $(SolutionDir)bin。示例代码创建 800 × 600 窗口,通过应用回调执行纹理绘制和窗口尺寸变化处理。

验证与问题排查

仓库尚未配置自动化测试框架、CI 或覆盖率要求;easy2d_test 是交互式演示程序。修改后应构建受影响模块,手动检查窗口启动、纹理显示、透明混合、投影、窗口缩放和正常退出。

现象 检查方向
找不到 EGL/egl.h 或 GLES2/gl2.h SDK 是否已解压,头文件目录层级是否符合工程配置
找不到 libEGL.lib 或 libGLESv2.lib SDK 导入库是否放入 engine/third_party/win32/lib/
找不到 application_d.lib 或 video_d.lib 是否先成功构建相应引擎项目
启动时提示缺少 DLL DLL 是否与 Win32 程序匹配,是否位于程序目录或 PATH
图片未显示或加载时异常 示例图片是否存在,运行工作目录是否包含 res/
着色器或 EGL / GL 报错 资源路径、着色器日志、SDK 兼容性和错误输出

以上流程依据现有源码和工程配置整理,不代表已在当前环境完成编译或运行验证。提交问题时请提供构建配置、SDK 信息、复现步骤和错误日志;渲染问题附截图。

参与开发

开发约定见 AGENTS.md。保持 VS2008 编译器兼容性,保留旧文件的编码与换行;新增源码时同步更新对应 .vcproj,目录说明文件统一使用 README.md。

按功能模块拆分提交,使用 类型(模块): 简体中文说明,例如 fix(texture): 修正透明通道上传。拉取请求说明修改目的、验证结果和已知限制,视觉变化附前后截图。

许可证

项目采用 Apache License 2.0。随附第三方依赖的许可信息请分别查阅对应头文件、压缩包或发行说明。

About

基于 C++ 和 OpenGL ES 2.0 的轻量级二维游戏引擎原型,支持 Windows 窗口管理、着色器、纹理加载与二维渲染。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages