【小沐学GIS】基于C#绘制三维数字地球Earth(OpenGL)

本文介绍了用于渲染2D、3D矢量图形的OpenGL API,指出在C#中可借助第三方开源库调用OpenGL函数,如OpenTK、SharpGL、Tao框架等,其中Tao已停止维护可被OpenTK替代。还给出了不同组合的代码测试示例,包括2D和3D的相关代码编号。
🍺三维数字地球GIS系列相关文章(C++)🍺:
1【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut)第一期
2【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut)第二期
3【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut)第三期
4【小沐学GIS】基于C++绘制三维数字地球Earth(QT、OpenGL)第四期
5【小沐学GIS】基于C++绘制三维数字地球Earth(QT、OpenGL、Satellite、卫星轨道模拟)第五期
6【小沐学GIS】基于C++绘制三维数字地球Earth(OpenG、SolarSystem、太阳系模拟)第六期
7【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、OpenSceneGraph / OSG)第七期
8【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、二维瓦片地图)第八期
9【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、三维瓦片地球)第九期
10【小沐学GIS】基于C++绘制三维数字地球Earth(osgEarth、三维瓦片地球)第十期
11【小沐学GIS】基于C++绘制OpenStreetMap地图矢量数据(QT、OpenGL、OSM、Mapbox)第十一期
12【小沐学GIS】基于C++绘制地形DEM(OpenGL、Terrain、TIFF、hgt)第十二期
🍺GIS系列相关辅助工具如下🍺:
1【小沐杂货铺】GIS瓦片地图下载工具(高德/天地图/谷歌/必应/OSM/MapBox/ArcGIS)
2【小沐杂货铺】GIS高程地形tif文件转obj/gltf三维模型工具(geotiff to obj/gltf、3d模型处理)
🍺三维数字地球GIS系列相关文章(其他语言)🍺:
1【小沐学GIS】基于C#绘制三维数字地球Earth(C#、OpenGL)
2【小沐学GIS】基于Python绘制三维数字地球Earth(Python、OpenGL、地球/太阳系/卫星)
3【小沐学GIS】基于Android绘制三维数字地球Earth(Android、OpenGL)
4【小沐学GIS】基于Golang绘制三维数字地球Earth(Go、OpenGL)
5【小沐学GIS】基于Rust绘制三维数字地球Earth(Rust、OpenGL)
6【小沐学GIS】基于Lua绘制三维数字地球Earth(Lua、OpenGL)
7【小沐学GIS】基于Java绘制三维数字地球Earth(Java、OpenGL)
8【小沐学GIS】基于Unity3d绘制三维数字地球Earth(Unity3d、OpenGL)
9【小沐学GIS】基于Vulkan绘制三维数字地球Earth(Vulkan)
10【小沐学GIS】基于Godot绘制三维数字地球Earth(Godot)
11【小沐学GIS】基于VTK绘制三维数字地球Earth(VTK)
12【小沐学GIS】基于Babylon.JS绘制三维数字地球Earth(Babylon.JS、vue、react)
🍺三维数字地球WebGIS系列相关文章(Three.JS)🍺:
1【小沐学WebGIS】基于Three.JS绘制三维数字地球Earth(WebGL、vue、react)
2【小沐学WebGIS】基于Three.JS绘制三维太阳系Solar System(three.js、WebGL)第一期
3【小沐学WebGIS】基于Three.JS绘制三维太阳系Solar System(three.js、WebGL)第二期
4【小沐学WebGIS】基于Three.JS绘制卫星模拟Satellite Tracker(three.js、vue、react、卫星)
5【小沐学WebGIS】基于Three.JS绘制OpenStreetMap地图矢量数据(WebGL、OSM、2d/3d)
6【小沐学WebGIS】基于Three.JS绘制地形DEM(Three.JS、WebGL、TIFF)
7【小沐学WebGIS】基于Three.JS绘制瓦片地图(Three.JS、WebGL、Mapbox)
8【小沐学WebGIS】基于Three.JS绘制飞行轨迹Flight Tracker(Three.JS/ vue / react / WebGL)
9【小沐学WebGIS】基于WebGL绘制三维数字地球Earth(WebGL、地球/卫星/航迹)
10【小沐学WebGIS】基于WebGL绘制二三维地图地球晨昏效果(Three.JS/ vue / react )
11【小沐学WebGIS】基于Three.JS绘制三维城市建筑(City / vue / react )
🍺Three.JS系列相关文章如下🍺:
1【小沐杂货铺】基于Three.JS构建IFC模型浏览器(WebGL、CAD、Revit、IFC)
2【小沐杂货铺】基于Three.JS绘制汽车展示Car(WebGL、vue、react、autoshow)第1期
3【小沐杂货铺】基于Three.JS绘制汽车展示Car(WebGL、vue、react、autoshow)第2期
4【小沐杂货铺】基于Three.JS绘制云图/热力图/CAE物理场渲染(Three.JS、WebGL、CAE、heatmap)
5【小沐杂货铺】基于Three.js渲染三维风力发电机(WebGL、vue、react、WindTurbine)
6【小沐杂货铺】基于Three.js渲染三维船舶航行仿真(WebGL、vue、react、ship/boat/vessel)
7【小沐杂货铺】基于Three.js绘制三维管道Pipe(WebGL、vue、react)
8【小沐杂货铺】基于Three.js绘制三维机械臂RobotArm(WebGL、vue、react)
9【小沐杂货铺】基于Three.JS绘制三维海面/海洋/水面(WebGL / vue / react )
10【小沐杂货铺】基于Three.JS构建三维虚拟教学实践课程(WebGL / vue / react )
11【小沐杂货铺】基于Three.JS绘制URDF机器人模型(WebGL / vue / react )
12【小沐杂货铺】基于Three.JS绘制动物世界Animal(WebGL / vue / react )
13【小沐杂货铺】基于Three.js渲染三维飞行仿真Flight Simulation(WebGL / vue / react )
14【小沐杂货铺】基于Three.js渲染三维无人机Drone(WebGL / vue / react )
🍺三维数字地球WebGIS系列相关文章(Cesium.JS)🍺:
1【小沐学WebGIS】基于Cesium.JS绘制卫星轨迹Satellite Tracker(Cesium、vue、react)第1期
2【小沐学WebGIS】基于Cesium.JS绘制卫星轨迹Satellite Tracker(Cesium、vue、react)第2期
3【小沐学WebGIS】基于Cesium.JS绘制飞行轨迹Flight Tracker(Cesium/ vue / react / czml / GPX)
4【小沐学WebGIS】基于Cesium.JS绘制雷达波束/几何体/传感器Sensor(Cesium / vue / react )
5【小沐学WebGIS】基于Cesium.JS桌面端适配地球卫星App(Cesium.js+QT/C#/MFC/Python/Electron)
6【小沐学WebGIS】基于Cesium.JS绘制火箭发射Rocket(Cesium、vue、react)
7【小沐学WebGIS】基于Cesium.JS与TacView ACMI联动仿真通信(Cesium、vue、react)
🍺AI系列相关文章🍺:
1【小沐学AI】基于AI大模型开发MCP Server服务(Cesium.JS、Three.JS、Blender)

1、简介

1.1 OpenGL简介

OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来绘制从简单的图形到比较复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。

1.2 相关C#的OpenGL库

在C#中直接调用OpenGL函数比较繁琐,一般不直接使用。我们可以借助第三方开源库,比如SharpGL、CsGL、OpenTK、Tao框架等。下面对这些框架逐一介绍,其中Tao已经停止维护和更新了,可以被OpenTK替代。

1.2.1 OpenTK

https://github.com/opentk/opentk

The Open Took Kit (OpenTK), 是对 OpenGL、OpanAL、OpenCL 的跨平台的封装,使用 C# 编写,可以运行在 Windows、 Linux 以及 MacOSX 平台上, 任何 .Net 语言都可以使用它做开发。

1.2.2 SharpGL

https://github.com/dwmkerr/sharpgl
在 .NET 应用程序中使用 OpenGL。SharpGL 封装了所有现代 OpenGL 功能,并提供了强大的场景图来帮助开发。

1.2.3 tao.Opengl

https://github.com/mono/tao

Tao框架是C#使用Opengl的一种图形库,其他可供C#使用的图形库有诸如Sharpgl等。Tao框架包含了许多C库。Tao库结合了C#语言的特点,使得在使用Tao库时更加方便。
在动态链接库Tao.Platform.Windows中定义的SimpleOpenglControl类,其定义了几乎所有的Opengl主要绘图函数,包括场景初始化函数、场景绘制渲染函数、双缓存交换函数、重绘函数、窗口大小改变等等。在Form的派生类中添加一个内部的simpleOpenglControl类,就能使用它的所有属性和方法。

10、代码测试

10.1 opengl / wpf / c#(2d)

代码编号:C10_1_GIS_2dTileMap_C#

在这里插入图片描述
在这里插入图片描述

10.2 opengl / OpenTK / c#(3d)

代码编号:C10_2_GIS_3dEarth_C#

在这里插入图片描述
在这里插入图片描述

10.3 opengl / glut / Tao.OpenGL / c#(3d,太阳系)

代码编号:C10_3_GIS_3dEarth_C#

在这里插入图片描述
在这里插入图片描述

10.4 opengl / DllImport / c#(3d)

代码编号:C10_4_GIS_3dEarth_C#

在这里插入图片描述
在这里插入图片描述

结语

如果您觉得这些文字有一点点用处,请给作者点个赞;╮( ̄▽ ̄)╭
如果您有技术问题探讨,评论处留言。//(ㄒoㄒ)//
谢谢各位童鞋们啦( ´ ▽ ` )ノ ( ´ ▽ `` )っ!
更多精彩文章详见微信公众号:爱阅读的小沐

如需技术探讨 / 软件定制 / 代码分享,请加文章末尾的微信公众号或QQ!
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值