【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut、QT)第三期

🍺三维数字地球系列相关文章如下🍺:
1 【小沐学GIS】基于C++绘制三维数字地球Earth(456:OpenGL、glfw、glut)第一期
2 【小沐学GIS】基于C++绘制三维数字地球Earth(456:OpenGL、glfw、glut)第二期
3 【小沐学GIS】基于C++绘制三维数字地球Earth(456:OpenGL、glfw、glut)第三期
4 【小沐学GIS】基于C++OpenSceneGraph(OSG)绘制三维数字地球Earth(7:OpenGL)
5 【小沐学GIS】基于C++QT绘制三维数字地球Earth(8:OpenGL)
6 【小沐学GIS】基于C++绘制太阳系SolarSystem(9:OpenGL、glfw、glut)
7 【小沐学GIS】基于C#绘制三维数字地球Earth(10:OpenGL)
8 【小沐学GIS】基于Python绘制三维数字地球Earth(11:OpenGL)
9 【小沐学GIS】基于Android绘制三维数字地球Earth(12:OpenGL)
10 【小沐学GIS】基于WebGL绘制三维数字地球Earth(13:OpenGL)

文章目录

  • 1、简介
  • 2、相关公式
  • 3、实现步骤
  • 4、运行结果(3d整体地球)
    • [4.21 opengl / glfw / glew / c++ / 白天黑夜大气层 (3d)](#4.21 opengl / glfw / glew / c++ / 白天黑夜大气层 (3d))
    • [4.22 opengl / glfw / glew / c++ / 云层 (3d)](#4.22 opengl / glfw / glew / c++ / 云层 (3d))
    • [4.23 opengl / glfw / glew / c++ / obj(3d)](#4.23 opengl / glfw / glew / c++ / obj(3d))
    • [4.24 opengl / glfw / glad / c++ / 发光太阳和地球(3d)](#4.24 opengl / glfw / glad / c++ / 发光太阳和地球(3d))
    • [4.25 opengl / glfw / glew / c++ / 天空盒(3d)](#4.25 opengl / glfw / glew / c++ / 天空盒(3d))
    • [4.26 opengl / win32 / glew / FreeImage / c++ / 动态天空(3d)](#4.26 opengl / win32 / glew / FreeImage / c++ / 动态天空(3d))
    • [4.27 opengl / freeglut / glew / c++ / 白天夜晚(3d)](#4.27 opengl / freeglut / glew / c++ / 白天夜晚(3d))
    • [4.28 opengl / freeglut / glad / c++ / 太阳地球天空盒(3d)](#4.28 opengl / freeglut / glad / c++ / 太阳地球天空盒(3d))
    • [4.29 opengl / sdl / glad / c++ / 文字/网格(3d)](#4.29 opengl / sdl / glad / c++ / 文字/网格(3d))
    • [4.30 opengl / glfw / glad / c++ / 白天黑夜法线(3d)](#4.30 opengl / glfw / glad / c++ / 白天黑夜法线(3d))
  • 结语

1、简介

在现代计算机图形学中,OpenGL(Open Graphics Library)是一个广泛使用的跨平台的图形API,它允许开发者在各种操作系统上渲染二维和三维矢量图形。实现一个三维地球模型是OpenGL应用的一个经典案例,涉及到球体的建模、纹理映射、光照和视角控制等多个方面。

2、相关公式

3、实现步骤

首先,创建一个球体模型来代表地球。定义球体的顶点和索引,使用球坐标系下的参数方程来生成球体的顶点数据。然后,为球体创建纹理,这是一张全球的地图图片,或者是分割成多个区域的瓦片地图。纹理映射是将二维图像包裹到三维模型上的过程,它使得地球模型看起来更加真实。

光照是另一个重要的环节,它能够模拟不同光照条件下地球的明暗变化。OpenGL提供了多种光照模型,包括环境光、漫反射光和镜面反射光等,通过合理配置这些光照参数,可以增强地球模型的立体感。

视角控制是实现用户交互的关键。通过监听鼠标事件,可以实现对地球的旋转和平移操作,让用户可以从不同角度观察地球。这通常涉及到一些矩阵变换,如旋转矩阵和平移矩阵,它们被用来更新模型视图矩阵,从而改变相机的位置和方向。

最后,渲染循环是OpenGL程序的核心,它不断地清除屏幕、设置绘图状态、绘制地球模型,并交换前后缓冲区以更新显示。在这个循环中,处理所有的绘图命令,包括设置纹理、应用光照和执行绘制调用。

4、运行结果(3d整体地球)

4.21 opengl / glfw / glew / c++ / 白天黑夜大气层 (3d)


4.22 opengl / glfw / glew / c++ / 云层 (3d)


4.23 opengl / glfw / glew / c++ / obj(3d)

4.24 opengl / glfw / glad / c++ / 发光太阳和地球(3d)


4.25 opengl / glfw / glew / c++ / 天空盒(3d)


4.26 opengl / win32 / glew / FreeImage / c++ / 动态天空(3d)

4.27 opengl / freeglut / glew / c++ / 白天夜晚(3d)


4.28 opengl / freeglut / glad / c++ / 太阳地球天空盒(3d)


4.29 opengl / sdl / glad / c++ / 文字/网格(3d)


4.30 opengl / glfw / glad / c++ / 白天黑夜法线(3d)



以上章节所有地球代码,均在VS2017及以上、或QT5、QT6等开发环境编译通过。工程文件基于CMake构建。

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

相关推荐
别动我齐刘海10 小时前
机器人运动控制学习2——基础进阶
c++·人工智能·神经网络·学习·目标检测·机器学习·机器人
小庞在加油10 小时前
WinDbg实战:QT/跨平台项目死锁与无响应问题排查指南
开发语言·qt·windbg·工具
傻啦嘿哟11 小时前
英雄联盟皮肤爬虫:爬取全皮肤价格与特效,做比价工具
java·c++·爬虫
码匠许师傅12 小时前
【C++ 面试真题】24. 聊聊 C++ 的时间日期处理
java·c++·面试
闻道且行之12 小时前
图片处理助手|泊松融合原理 + C++ 工程实现,seamlessClone 三模式一次讲透
数据库·c++·人工智能·opencv
hy.z_77712 小时前
【QT】1.QT初识(背景介绍、搭建开发环境、Qt Creator、程序、项目文件解析、编程注意事项)
qt
莫浅子13 小时前
day01-USB架构与枚举
c++·单片机·嵌入式驱动
小欣加油13 小时前
leetcode3069 将元素分配到两个数组中I
数据结构·c++·算法·leetcode·职场和发展
不会代码的小猴13 小时前
7. JSON
开发语言·c++·笔记·qt·算法·json
沫璃染墨14 小时前
《Qt从零入门系列(六):信号与槽进阶——从多种连接方式到Lambda表达式》
开发语言·c++·qt·代码规范·设计规范·qt5