LiziEngine
Project description
LiziEngine
项目概述
向量场可视化引擎,采用现代化的架构设计,提供高性能的向量场计算和渲染功能。
项目特点
- 模块化设计: 将代码按功能划分为多个模块,每个模块职责单一
- 依赖注入: 避免单例模式,降低模块间耦合
- 事件驱动: 采用事件系统进行模块间通信,降低耦合度,支持异步处理
- 状态集中管理: 统一的状态管理,避免全局变量滥用
- 配置统一管理: 集中的配置管理,支持从文件加载配置和热更新
- 资源管理: 更好的资源生命周期管理,防止内存泄漏
- 高性能计算: 支持CPU和GPU加速计算
架构设计
核心模块 (core/)
- container.py: 依赖注入容器,提供依赖注入功能,避免单例模式,降低模块间耦合
- events.py: 事件系统,提供发布-订阅模式的事件通信机制,支持异步处理
- state.py: 状态管理,提供统一的状态管理功能,支持状态变更通知和状态快照
- config.py: 配置管理,提供统一的配置管理功能,支持从文件加载配置和热更新
- app.py: 应用核心,整合各个管理器,提供统一的应用程序接口
计算模块 (compute/)
- vector_field.py: 向量场计算,提供向量场计算的核心功能,支持CPU和GPU计算
- cpu_vector_field.py: CPU向量场计算,提供基于CPU的向量场计算功能
- gpu_vector_field.py: GPU向量场计算,提供基于OpenCL的GPU向量场计算实现
图形模块 (graphics/)
- renderer.py: 渲染器,提供向量场的渲染功能,支持OpenGL渲染和着色器程序
窗口管理模块 (window/)
- window.py: 窗口管理,提供窗口管理功能,支持OpenGL窗口创建和事件处理
项目结构
LiziEngine-Reborn/
├── docs/ # 文档目录
├── lizi_engine/ # 主代码目录
│ ├── core/ # 核心模块
│ ├── compute/ # 计算模块
│ ├── graphics/ # 图形渲染模块
│ ├── window/ # 窗口管理模块
├── examples/ # 示例代码
├── plugin/ # 插件模块
├── requirements.txt # 项目依赖
快速开始
安装依赖
pip install -r requirements.txt
运行示例
# 基本使用示例
python examples/basic_usage.py
# 向量场模式示例
python examples/patterns.py
架构设计
LiziEngine采用现代化的架构设计,主要包括以下模块:
核心模块 (core)
- 容器 (container.py): 提供依赖注入功能,避免单例模式,降低模块间耦合
- 事件系统 (events.py): 提供发布-订阅模式的事件通信机制,支持异步处理
- 状态管理 (state.py): 提供统一的状态管理功能,支持状态变更通知和状态快照
- 配置管理 (config.py): 提供统一的配置管理功能,支持从文件加载配置和热更新
- 应用核心 (app.py): 整合各个管理器,提供统一的应用程序接口
计算模块 (compute)
- 向量场计算 (vector_field.py): 提供向量场计算的核心功能,支持CPU和GPU计算
- CPU计算 (cpu_vector_field.py): 基于CPU的向量场计算实现
- GPU计算 (gpu_vector_field.py): 基于OpenCL的GPU向量场计算实现
图形渲染模块 (graphics)
- 渲染器 (renderer.py): 提供向量场的渲染功能,支持OpenGL渲染和着色器程序
窗口管理模块 (window)
- 窗口管理 (window.py): 提供窗口管理功能,支持OpenGL窗口创建和事件处理
开发指南
添加新功能
- 在相应的模块中添加新功能
- 通过事件系统与其他模块通信
- 更新配置文件(如需要)
- 更新状态(如需要)
自定义渲染器
- 继承
VectorFieldRenderer类 - 重写相应的渲染方法
- 在应用核心中注册新的渲染器
自定义计算器
- 继承
VectorFieldCalculator类 - 实现自定义的计算方法
- 在应用核心中注册新的计算器
注意事项
- 避免直接修改其他模块的内部状态
- 使用事件系统进行模块间通信
- 遵循单一职责原则
- 保持配置和状态的一致性
- 依赖注入容器负责管理组件的生命周期
- 使用GPU计算时需要确保OpenCL环境已正确配置
许可证
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
lizi_engine-0.1.6.tar.gz
(31.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lizi_engine-0.1.6.tar.gz.
File metadata
- Download URL: lizi_engine-0.1.6.tar.gz
- Upload date:
- Size: 31.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fe26dc9e99c18876d08a5a971139c82d02981b40c03a7608586595855e61e09
|
|
| MD5 |
553e2db83612fd8a70f5ddc180de5e7f
|
|
| BLAKE2b-256 |
88889b3f3aea17060aedc80e8924009028a383ce9faed47fffbf9afc2e5646c4
|
File details
Details for the file lizi_engine-0.1.6-py3-none-any.whl.
File metadata
- Download URL: lizi_engine-0.1.6-py3-none-any.whl
- Upload date:
- Size: 39.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
962ab86eb9d8bfa7b7aab6fa39b70e4b0002f8d47baf33417a8ec1cab2f26181
|
|
| MD5 |
01507ecae82b99a62edacec644539ed1
|
|
| BLAKE2b-256 |
7c23058262d649f78b475b9e75089fdb4b4c76d89110539172c526ae2f54f2f8
|