1.用Python和OpenGL探索数据可视化(三维篇)- 创建三维坐标轴类和立方体类
2.游戏引擎开发常用库
3.从零开始实现GameBoy模拟器 #0 开篇
4.开源软件: KHistory 按键可视化插件模块 - 使用 & 开发介绍
用Python和OpenGL探索数据可视化(三维篇)- 创建三维坐标轴类和立方体类
本系列文章讲解使用Python与OpenGL 4.5进行数据可视化开发,菜菜单确保您的单安计算机支持OpenGL 4.5版本,建议阅读《准备工作(一)Windows下检测显卡和OpenGL信息》以确认兼容性。卓源继续参阅《准备工作(二)配置Windows下VS Code + Python + OpenGL开发环境》以完成所需开发环境的开源设置。
上一节我们通过立方体学习了OpenGL的菜菜单变换矩阵与模型矩阵。紧接着在《用Python和OpenGL探索数据可视化(三维篇)- 你好,单安换手率增缩倍量公式源码坐标轴》一节中我们绘制了三维坐标轴。卓源立方体与坐标轴是开源三维图形绘制中常见的元素,因此我们将在本节中通过代码重构将它们转化为专门类,菜菜单以便后续的单安重复使用。
开始VS Code,卓源使用File菜单下的开源“Open Folder”功能,打开D:\pydev\pygl并进入common文件夹,菜菜单新建一个名为shaders的单安子文件夹。将basic文件夹下的卓源shaders子文件夹中的axes.vs、axes.fs、cube.vs、cube.fs文件复制至common文件夹的shaders文件夹。
在common文件夹中新建axeshelper.py文件,并在其中输入相应代码。同样地,创建cube.py文件并输入对应代码。接着,在common文件夹中建立__init__.py文件,并在其中输入必要的代码。
在basic文件夹中新建一个名为cube_app_v1.py的文件,并在其中输入相应的代码。点击VS Code右上角的三角形图标以运行代码,此时会呈现预期的x导航目录源码结果。
借助坐标轴的辅助,图形变换变得清晰且有趣。通过本系列文章中的源代码资源,您可以进一步探索和实践Python与OpenGL的数据可视化开发。
参考系列文章:1.《用Python和OpenGL探索数据可视化(基础篇)- 你好,窗口!》;2.《用Python和OpenGL探索数据可视化(基础篇)- 你好,OpenGL!》;3.《用Python和OpenGL探索数据可视化(基础篇)- 你好,ImGui!》;4.《用Python和OpenGL探索数据可视化(基础篇)- 你好,小不点!》;5.《用Python和OpenGL探索数据可视化(基础篇)- 重构代码“你好,小不点!”》;6.《用Python和OpenGL探索数据可视化(基础篇)- “你好,线段!”》;7.《用Python和OpenGL探索数据可视化(基础篇)- 重构代码组织OpenGL核心对象包pygl》;8.《用Python和OpenGL探索数据可视化(基础篇)- 你好,三角形!》;9.《用Python和OpenGL探索数据可视化(基础篇)- 改进OpenGL程序Program类》;.《用Python和OpenGL探索数据可视化(基础篇)- 你好,矩形!》;.《用Python和OpenGL探索数据可视化(基础篇)- 完善pygl增加索引缓存对象EBO》;.《用Python和OpenGL探索数据可视化(基础篇)- 你好,纹理!》;.《用Python和OpenGL探索数据可视化(基础篇)- 完善pygl增加OpenGL二维纹理对象》;.《用Python和OpenGL探索数据可视化(基础篇)- 细说纹理环绕》;.《用Python和OpenGL探索数据可视化(基础篇)- 细说纹理过滤》;.《用Python和OpenGL探索数据可视化(基础篇)- 处理键盘和鼠标事件》;.《用Python和OpenGL探索数据可视化(三维篇)- 你好,坐标轴》;.《用Python和OpenGL探索数据可视化(三维篇)- 用立方体体验模型矩阵》。
游戏引擎开发常用库
GLFW,一个用于窗口及输入处理的库,是游戏引擎开发中的核心组件之一。它提供了创建和管理窗口、java源码转为py处理事件等基础功能,为开发者提供了高效的界面处理手段。
GLM,数学库,提供了一系列用于三维空间数学运算的函数和类型。在游戏开发中,它被广泛应用于处理各种数学操作,如向量、矩阵运算,为游戏引擎的物理模拟、渲染等模块提供强大的计算支持。
stb,图像加载库,专为快速加载和处理图像文件而设计,支持多种图像格式。它在游戏引擎中主要用于加载纹理、图标等资源,提高游戏的加载速度和资源管理效率。
ImGui,一个美观、高效的UI库,提供了丰富的界面元素和组件,简化了UI界面的构建过程。在游戏开发中,它用于构建游戏菜单、设置面板等,提升用户体验。
easy_profiler,统一游戏源码性能分析库,帮助开发者诊断和优化游戏性能,通过收集和分析性能数据,找出瓶颈并进行优化,提升游戏的运行效率。
Assimp,模型加载库,支持多种3D模型格式的导入,简化了游戏引擎中模型资源的加载和管理过程。它在处理复杂的3D模型时,能够提高性能和降低内存消耗。
ETC2Comp,图像压缩库,用于减少纹理数据的存储空间,提高游戏加载速度和内存使用效率。在处理大量纹理资源时,它可以显著降低资源占用,提升游戏性能。
TaskFlow,并行库,提供了一种易于使用的并行编程模型,支持多线程和多核计算,加速了游戏中的计算密集型任务,如AI、物理模拟等。
MeshOptimizer,网格优化库,用于优化3D模型的恶魔的眼泪源码网格结构,减少渲染数据量,提高渲染效率。它在处理大规模场景时,能够有效降低硬件需求,提升性能。
tinyobjloader,obj模型加载库,专门用于快速解析和加载.obj格式的3D模型。它在游戏开发中,用于加载和使用复杂的3D模型资源,简化了资源管理。
spdlog,日志库,提供了高效、灵活的日志记录功能,帮助开发者跟踪和调试游戏运行过程中的问题。在游戏开发中,日志系统是调试和维护游戏不可或缺的一部分。
yaml-cpp,yaml格式库,用于解析和生成yaml格式的文件。在Unity引擎中,场景文件通常使用yaml格式,yaml-cpp在处理Unity场景文件时提供了便利。
entt,ECS库,Entity-Component-System(实体-组件-系统)架构的实现,提供了高效、灵活的实体管理方式,简化了游戏逻辑的编写,特别是对于大型游戏项目。
box2d,2d物理引擎,用于模拟2D物理世界,如碰撞、运动等,是许多2D游戏开发中的必备工具。
bullet3,3d物理引擎,提供全面的3D物理模拟功能,广泛应用于需要复杂物理效果的游戏开发中,如碰撞、动力学等。
PhysX,英伟达物理引擎,提供高质量的物理模拟,特别适用于需要高精度物理效果的游戏开发,支持多种物理特性,如刚体、流体、软体等。
SDL,多媒体开发库,提供了基础的多媒体功能,如音频、视频、图形等,适用于构建跨平台的多媒体应用,包括游戏。
freetype2,字体渲染库,用于渲染高质量的文本,支持多种字体格式,提供了灵活的字体渲染控制,是游戏界面中文字显示的关键组件。
mono,C#脚本库,类似于Unity脚本,提供了C#语言在游戏引擎中的支持,允许开发者使用C#编写脚本,简化了游戏逻辑的编写和维护。
从零开始实现GameBoy模拟器 #0 开篇
欢迎踏上GameBoy模拟器开发的冒险之旅,让我们从零开始,通过C++技术,逐步构建一个功能完善的模拟器,深入剖析LR CPU、总线、PPU和APU等核心组件。这个系列将涵盖篇文章,预计耗时半月,每一步都伴随着实际代码的编写和经典游戏《塞尔达传说:织梦岛》和《恶魔城:德古拉传说》的运行演示。在这个过程中,你不仅能提升编程技能,更能洞悉GameBoy硬件的奥秘。 深入理解GameBoy的指令集</ 让我们首先聚焦LR的OPCODES,这是模拟器开发的关键。参考详尽的Game Boy硬件剖析视频和Gameboy Emulator Development教程,以及官方文档,你会发现每个指令背后隐藏的机理。记得访问这里,获取更深入的教程和实例。 启航前的准备工作</ 在开始之前,确保你已下载了GameBoy游戏资源,加入我们的开发者交流群(群号:),并根据文档安装Windows上的Visual Studio或macOS下的XCode,或者使用xmake。跟着JX-Master/LunaGB项目,一步步完成setup脚本的安装,首次运行时可能会提示下载依赖库。运行模拟器,只需在终端输入xmake run LunaGB,即可体验你的自制游戏世界。 开发旅程的基石:LunaSDK</ 基于LunaSDK的项目结构,我们将逐步展开。它包含了图形、输入和音频的基础功能,为模拟器开发提供了坚实的基础。从main.cpp的入口开始,我们初始化LunaSDK并创建App对象,run_app函数导入模块,通过RV(Return Value)机制处理潜在的错误,使用lutry和lucatch宏简化错误处理,让你的代码更加优雅。 关键点速览</深入讲解App类的构造,特别是如何使用Ref智能指针管理对象
LunaSDK的初始化和App对象创建,以及App类的init()和update()函数
主循环中的GUI设计,如Dear ImGui的使用和主菜单设计
错误处理机制,如何通过RV和异常处理宏处理潜在的编程挑战
现在,你已经为模拟器的初步开发做好了准备。接下来,我们将在后续章节中深入探讨硬件细节、指令实现和功能开发,让你的GameBoy模拟器真正活起来。别忘了,每一步的进展都值得庆祝,让我们在银叶吉祥系列#1中继续前行吧!开源软件: KHistory 按键可视化插件模块 - 使用 & 开发介绍
KHistory是一款轻量级、跨平台的键盘与手柄按键检测工具,无需安装单一可执行文件即可使用,大小约kb。为了提升用户可玩性与定制化需求,KHistory特推出插件模块KPlugin。KPlugin为开发者提供了基础功能与扩展能力,实现自定义按键可视化插件。 该插件模块具备丰富的功能特性,用户可在KHistory的控制模块中通过Next按钮或插件下拉菜单选择不同的插件。目前,基础插件包括基础键盘与基础手柄插件,进一步扩展则有针对键盘与手柄的格斗游戏插件,如键盘格斗游戏与手柄格斗游戏。 KPlugin的开发与扩展极其简便,通过遵循PluginBase提供的标准接口与自动注册机制,开发者无需深入了解C++或imgui知识,只需具备基本的编程编译能力即可。以下是开发插件的基本流程: 创建插件文件:在kplugin/auto-register目录下创建以.kplugin.hpp结尾的文件,文件名应与插件名一致,作为插件类名。 继承插件基础接口:继承PluginBase类并命名插件。 实现按键布局:利用keyLayoutImpl接口设计按键在布局区域的位置。 自定义按键颜色与名称(可选):通过keyColorTableRemap与keyNameTableRemap接口实现按键颜色与名称的自定义。 自动完成插件注册:使用xmake环境进行项目构建,插件将自动注册。 对于有兴趣的开发者,欢迎分享您的插件作品,让更多用户能享受到您的创作。 如需获取更多信息或访问相关链接,请访问KHistory官方网站或社区。