getfromcode体系课 会员免费

OpenGL-自主高性能三维GIS平台架构与实现 第一季

《OpenGL-自主高性能三维GIS平台架构与实现 第一季》适合有 C++ 和一点 OpenGL 基础、想自己做三维地图而不是只会调 Cesium 的人。课按引擎骨架推进:窗口与上下文、多线程绘制、资源/纹理管理、3D 场景与摄像机(缩放、任意点旋转、漫游),再做包围盒/包围球、坐标转换和射线拾取。场景侧用四叉树算 TileId、节点分割与瓦片加载;数据侧用生产者-消费者任务系统把 IO 和 GL 上传拆开。性能部分覆盖 API 耗时、顶点/纹理打包、不可见裁剪、纹理压缩和 cache。收尾用 DLL 重构,支持嵌入外部窗口,并做任意格式瓦片、TMS、HttpGoogle、自定义绘制、GDI

单课价¥29.90新品 上架
会员价 会员免费开通会员,全站课程按额度无限下载套餐详情
1 人关注 更新于 2026-09-29 永久有效
发货

网盘链接 · 支付成功后自动发货

保障

永久有效 · 链接失效免费补发

客服

每日 9:00-21:00 在线客服 联系客服

支付成功后自动发货,可在「我的订单」查看网盘链接;链接失效可联系客服免费补链。

正版保障 极速发货 售后无忧

这门课的主题很明确:用 OpenGL 从零搭一个自主可控的三维 GIS 渲染引擎,第一季解决的是骨架和基础能力问题。它不假设你已经在用 Cesium 或 osgEarth,而是把窗口创建、上下文管理、帧循环、场景组织、任务调度这些底层环节摊开来讲。对于想搞清楚"三维地图到底怎么跑起来"的开发者,这种视角比直接调库更有参考价值。

技术栈与工程前提

主体语言是 C++,图形接口用 OpenGL,窗口与上下文通常依赖 GLFW 或类似轻量库,数学部分涉及矩阵、向量和投影变换。这意味着读者至少要能读懂 C++ 类设计、指针与回调,并且对 OpenGL 的缓冲、着色器、纹理绑定有基本概念。如果只会写 GLSL 片元着色器而不清楚 VAO/VBO 的生命周期,前半段会有些吃力;反过来,有 DirectX 或其他图形 API 经验的人迁移过来成本不高。

工程上它是按"引擎骨架"组织的,不是按功能 demo 拼凑。渲染框架、场景管理、任务系统、插件加载各自分层,这种结构决定了后续能不能持续扩展,也是这份资料最值得对照实践的地方。

渲染框架与场景交互

第一季前半段的重心在于把"能画"变成"能漫游"。窗口与上下文只是起点,真正的工程量在帧循环的组织方式、多线程绘制时上下文与渲染线程的归属、资源与纹理的加载和释放时机。摄像机部分覆盖缩放、绕任意点旋转和自由漫游,这几个操作在 GIS 场景里对应的是用户最直接的体感,参数没调好就会出现抖动或万向锁。

交互拾取是另一条主线:包围盒、包围球用于粗筛,射线拾取用于精确命中,中间还夹着屏幕坐标到世界坐标的转换。这套组合在做地图标注、要素选点时是刚需。经纬度与墨卡托投影的换算也在这里出现,它决定了你的瓦片索引和实际地理坐标能不能对上。

四叉树瓦片与数据调度

场景侧用四叉树管理瓦片,核心是 TileId 的计算、节点分割条件、可见性判断和瓦片加载时机。这部分逻辑直接影响到内存占用和帧率稳定性——分割太激进会频繁请求,太保守又看不到细节。数据侧用生产者-消费者模型把 IO 和 GL 上传拆开,避免主线程被文件读取或网络请求阻塞。异步任务系统在这里不是锦上添花,而是让瓦片流式加载不卡住渲染线程的前提。

性能优化部分涉及 API 耗时统计、顶点与纹理打包、不可见裁剪。这些手段在真实项目里往往比换更快的显卡更有效,也更容易被忽略。

插件与矢量数据接入

后半段用 DLL 插件的方式加载 TMS 和 Google 图源,说明引擎在图源层面留了扩展点,而不是把某种瓦片服务写死。GDI 绘制用于叠加二维内容,Shapefile 矢量则补上了点线面数据的解析与渲染。这几块放在第一季结尾,意图是先让平台能跑起来、能接数据,再谈更高阶的调度和渲染质量。

怎么用这份资料

建议按引擎骨架的顺序推进,每完成一层就自己动手改一处,比如把四叉树的分割阈值调一调,观察瓦片请求和帧率的变化。配套源码更适合当对照物:先看接口怎么划分,再看实现怎么落地,最后回到自己的工程里复用任务系统或瓦片调度这类相对独立的模块。GIS 引擎的难点从来不在单个 API,而在这些模块之间的耦合与权衡,这份资料的价值也在于把耦合关系摆出来给你看。


这是自主三维 GIS 引擎的第一季:用 OpenGL 从窗口、上下文和帧循环搭起渲染框架,再做摄像机漫游、包围盒/射线拾取、经纬度与墨卡托投影,并用四叉树管理瓦片场景。后半段补上异步任务系统、顶点/纹理打包与裁剪优化,最后用 DLL 插件加载 TMS / Google 图源、GDI 绘制和 Shapefile 矢量。

课程推荐

《OpenGL-自主高性能三维GIS平台架构与实现 第一季》适合有 C++ 和一点 OpenGL 基础、想自己做三维地图而不是只会调 Cesium 的人。课按引擎骨架推进:窗口与上下文、多线程绘制、资源/纹理管理、3D 场景与摄像机(缩放、任意点旋转、漫游),再做包围盒/包围球、坐标转换和射线拾取。场景侧用四叉树算 TileId、节点分割与瓦片加载;数据侧用生产者-消费者任务系统把 IO 和 GL 上传拆开。性能部分覆盖 API 耗时、顶点/纹理打包、不可见裁剪、纹理压缩和 cache。收尾用 DLL 重构,支持嵌入外部窗口,并做任意格式瓦片、TMS、HttpGoogle、自定义绘制、GDI 多线程和 Shapefile 矢量插件。【技能收获】学完可掌握:OpenGL 渲染框架与多线程上下文、三维摄像机与拾取、墨卡托投影与经纬度转换、四叉树瓦片调度、异步任务系统、绘制批处理与裁剪、GIS 图源/矢量插件。105 节按模块连续推进,便于对照代码搭出可演示的三维地图。【学习建议】建议按 1~105 顺序:先把 1~21 的窗口和摄像机跑通,22~41 做完包围体、射线和投影,42~56 画出四叉树瓦片,57~80 把异步加载和性能优化接上,81~105 再做插件化图源与 shp。每完成一块就保存一帧「能拖动缩放的地图」截图,比只看原理更能写进作品集。【就业发展】可面向岗位:三维 GIS 引擎开发、图形渲染工程师、数字孪生 / 地图可视化。政务一张图和行业 GIS 仍需要能自己做瓦片调度、相机漫游和矢量叠加的人,手写 OpenGL 引擎比只会调现成三维地球 API 更有底层说服力。

视频目录(105 节)

*   1 课程介绍.mp4

*   2 窗口建立.mp4

*   3 环境配置.mp4

*   4 窗口类的抽象封装.mp4

*   5 上下文管理(OpenGLSetup).mp4

*   6 OpenGL帧循环.mp4

*   7 事件处理.mp4

*   8 获取OpenGL高版本功能.mp4

*   9 框架之-OpenGL封装.mp4

*   10 框架之-Frame.mp4

*   11 框架之多线程绘制.mp4

*   12 框架之多线程绘制(2).mp4

*   13 上下文管理(框架数据结构).mp4

*   14 上下文管理(框架数据结构)-资源管理.mp4

*   15 上下文管理(框架数据结构)-资源管理2.mp4

*   16 上下文管理(框架数据结构)-纹理管理.mp4

*   17 上下文管理(框架数据结构)-Image.mp4

*   18 创建3D场景.mp4

*   19 引入摄像机.mp4

*   20 摄像机完善.mp4

*   21 摄像机控制.mp4

*   22 摄像机控制-鼠标缩放.mp4

*   23 三维向量实现-包围盒-包围球.mp4

*   24 包围盒计算通用化以及变化更新.mp4

*   25 包围盒-实践.mp4

*   26 包围球.mp4

*   27 坐标转换,实现经纬度-世界坐标-窗口坐标.mp4

*   28 射线.mp4

*   29 射线的应用-三角形相交.mp4

*   30 射线的应用-拾取.mp4

*   31 摄像机的完善.mp4

*   32 优化完善框架-资源数据优化处理.mp4

*   33 优化OpenGL线程上下文处理.mp4

*   34 墨卡托投影.mp4

*   35 摄像机原理介绍.mp4

*   36 第三人称摄像机.mp4

*   37 摄像机的旋转-中心点.mp4

*   38 代码整理封装.mp4

*   39 摄像机的旋转-任意点.mp4

*   40 摄像机缩放-任意点推进.mp4

*   41 摄像机移动漫游.mp4

*   42 场景管理的知识介绍-Octree-QuadTree-BSP.mp4

*   43 四叉树-TileId计算.mp4

*   44 瓦片Id计算&坐标转换.mp4

*   45 场景管理-四叉树-初步.mp4

*   46 场景管理-四叉树-框架.mp4

*   47 场景管理-四叉树-框架2.mp4

*   48 场景管理-四叉树-节点分割-退化.mp4

*   49 场景管理-四叉树绘制.mp4

*   50 场景管理-四叉树-瓦片加载.mp4

*   51 场景管理-四叉树-无数据处理.mp4

*   52 场景管理-四叉树-无数据处理(2).mp4

*   53 场景管理-四叉树-无数据处理-方式2.mp4

*   54 场景管理-四叉树-无数据处理-方式2-数据不全处理.mp4

*   55 场景管理-四叉树-优化操作-总结.mp4

*   56 场景管理-四叉树-优化操作-总结.mp4

*   57 数据管理-异步数据加载.mp4

*   58 任务系统-线程模型(生产者与消费者).mp4

*   59 任务系统-线程间通讯的基础.mp4

*   60 任务系统-接口定义实现.mp4

*   61 任务系统-框架实现.mp4

*   62 任务系统-框架实现(2).mp4

*   63 任务系统-打通流程.mp4

*   64 任务系统-OpenGL数据流程.mp4

*   65 任务系统-流程优化.mp4

*   66 任务系统-流程优化2.mp4

*   67 影响性能的因素(时间都去哪里了).mp4

*   68 API调用时间原理分析.mp4

*   69 顶点数据打包.mp4

*   70 顶点数据打包-索引方式.mp4

*   71 纹理打包(方式1).mp4

*   72 纹理打包(方式2-数组cache).mp4

*   73 纹理打包(方式2-数组cache)2.mp4

*   74 降低绘制数据量.mp4

*   75 优化节点(不可见处理).mp4

*   76 优化节点(不可见处理)2.mp4

*   77 优化节点(不可见处理).mp4

*   78 纹理压缩.mp4

*   79 cache(缓存).mp4

*   80 总结.mp4

*   81 框架设计原理.mp4

*   82 利用dll(动态链接库)重构架构.mp4

*   83 主工程的接口设计与实现.mp4

*   84 改进完善代码支持嵌入到其他窗口中.mp4

*   85 外部输入事件处理.mp4

*   86 瓦片插件-任意格式瓦片支持.mp4

*   87 瓦片插件-任意格式瓦片支持2.mp4

*   88 瓦片插件-任意格式瓦片支持3.mp4

*   89 瓦片插件-任意格式瓦片支持5.mp4

*   90 瓦片插件-任意格式瓦片支持4.mp4

*   91 图源插件应用-TMS图源加载.mp4

*   92 瓦片插件-HttpGoogle.mp4

*   93 瓦片插件-HttpGoogle(2).mp4

*   94 瓦片插件-HttpGoogle(3).mp4

*   95 瓦片插件-通用插件(1).mp4

*   96 瓦片插件-通用插件(2).mp4

*   97 瓦片插件-通用插件(3).mp4

*   98 瓦片插件-用户自定义绘制.mp4

*   99 -瓦片插件-GDI多线程绘制.mp4

*   100 瓦片插件-Shapefile(Shp)瓦片.mp4

*   101 801-架构设计-矢量.mp4

*   102 802-架构设计-矢量接口实现(shp文件解析).mp4

*   103 803-架构设计-矢量接口实现(shp文件解析.mp4

*   104 804-架构设计-矢量接口实现(shp文件解析)..mp4

*   105 805-架构设计-矢量接口实现(shp文件解析).mp4