QT-地形3D

QT-地形3D

  • 一、 演示效果
  • 二、关键程序
  • 三、下载链接

一、 演示效果

请添加图片描述
请添加图片描述

请添加图片描述

二、关键程序


#include "ShaderProgram.h"namespace t3d::core
{void ShaderProgram::init()
{initializeOpenGLFunctions();loadShaders();
}void ShaderProgram::addShader(const QString &filename, QOpenGLShader::ShaderType shaderType)
{QOpenGLShader *shader = new QOpenGLShader(shaderType, mProgram.get());if (!shader->compileSourceFile(gDefaultPathShaders + filename))qDebug() << "Error compiling shader " << filename << " of type "<< static_cast<int>(shaderType);if (!mProgram->addShader(shader))qDebug() << "Error adding shader " << filename << " of type "<< static_cast<int>(shaderType);
}void ShaderProgram::loadShaders()
{mProgram = makeUnique<QOpenGLShaderProgram>();addShaders();if (mProgram->link() == false)qFatal("Problem linking shaders");elseqDebug() << "Initialized shaders";mProgram->bind();queryUniformLocations();refreshUniformValues();flushQueuedUniformValueChanges();mProgram->release();
}bool ShaderProgram::bind()
{if (!mProgram->bind()){System::warn("Unable to bind OpenGL ShaderProgram");return false;}flushQueuedUniformValueChanges();return true;
}void ShaderProgram::reloadShaders()
{loadShaders();
}void ShaderProgram::enqueueUniformValueChange(const GLint *uniformLocation, QVariant value)
{if (mProgram && mProgram->isLinked()){mProgram->bind();setUniformFromQVariant(*uniformLocation, value);mProgram->release(); // TODO this can cause issues if used while the program was bound// externally}elsemQueuedUniformValueChanges.append(QPair<const GLint *, QVariant>(uniformLocation, value));
}void ShaderProgram::setUniformFromQVariant(GLint location, QVariant &value)
{switch (static_cast<QMetaType::Type>(value.type())){case QMetaType::Int:mProgram->setUniformValue(location, static_cast<GLint>(value.toInt()));break;case QMetaType::Double:mProgram->setUniformValue(location, static_cast<GLfloat>(value.toDouble()));break;case QMetaType::Float:mProgram->setUniformValue(location, static_cast<GLfloat>(value.toFloat()));break;default:qFatal("Trying to set a queued shader uniform value for an unknown type");// TODO this is all we support. Eventuall QOpenGLShaderProgram should support// setUniformValue directly from a QVariant.}
}void ShaderProgram::flushQueuedUniformValueChanges()
{for (auto pair : mQueuedUniformValueChanges){setUniformFromQVariant(*pair.first, pair.second);}mQueuedUniformValueChanges.clear();
}}

三、下载链接

https://download.csdn.net/download/u013083044/88850945

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt中的事件该如何学习?(附带案例)

概述&#xff1a; 事件是Qt中比较重要的一部分&#xff0c;在初期如果理解不当学习可能会比较困难&#xff0c;这里提一嘴当初教我的那位老师水平是真的高&#xff0c;让我很轻易的就理解了事件的概念。 在平时我们见到那些界面上的某些快捷键就有可能是事件做的&#xff0c;…

2024年华为OD机试真题-计算面积-Python-OD统一考试(C卷)

题目描述: 绘图机器的绘图笔初始位置在原点(0, 0),机器启动后其绘图笔按下面规则绘制直线: 1)尝试沿着横向坐标轴正向绘制直线,直到给定的终点值E。 2)期间可通过指令在纵坐标轴方向进行偏移,并同时绘制直线,偏移后按规则1 绘制直线;指令的格式为X offsetY,表示在横…

计算机二级C语言的注意事项及相应真题-5-程序修改

目录 41.累加链表结点数据域中的数据作为函数值返回42.根据整型形参m&#xff0c;计算如下公式的值43.删除数列中值为x的元素44.从N个字符串中找出最长的那个串&#xff0c;并将其地址作为函数值返回45.将两个长度相等的纯数字字符串当作两个加数&#xff0c;求其代表的数值之和…

欢迎来到IT时代----盘点曾经爆火全网的计算机电影

计算机专业必看的几部电影 计算机专业必看的几部电影&#xff0c;就像一场精彩的编程盛宴&#xff01;《黑客帝国》让你穿越虚拟世界&#xff0c;感受高科技的魅力&#xff1b;《社交网络》揭示了互联网巨头的创业之路&#xff0c;《源代码》带你穿越时间解救世界&#xff0c;这…

【动态规划】【字符串】2167移除所有载有违禁货物车厢所需的最少时间

作者推荐 【深度优先搜索】【树】【有向图】【推荐】685. 冗余连接 II 本文涉及知识点 动态规划汇总 LeetCode2167移除所有载有违禁货物车厢所需的最少时间 给你一个下标从 0 开始的二进制字符串 s &#xff0c;表示一个列车车厢序列。s[i] ‘0’ 表示第 i 节车厢 不 含违…

第五次作业(防御安全)

需求: 1.办公区设备可以通过电信链路和移动链路上网&#xff08;多对多的NAT&#xff0c;并且需要保留一个公网IP 不能用来转换&#xff09; 2.分公司设备可以通过总公司的移动链路和电信链路访问到DMZ区的http服务器 3.分公司内部的客户端可以通过公网地址访问到内部的服务…

Linux:grep进阶(11)

Linux&#xff1a;shell脚本&#xff1a;基础使用&#xff08;4&#xff09;《正则表达式-grep工具》_shell grep 全角字符串-CSDN博客https://blog.csdn.net/w14768855/article/details/132338954?ops_request_misc%257B%2522request%255Fid%2522%253A%252217083360171680022…

c#,dotnet, DataMatrix 类型二维码深度识别,OCR,(基于 Halcon)

代码中部分调用的 c 函数参数&#xff0c;具体说明自行研究~&#xff08;我也是参考的其他资源&#xff0c;还没研究透彻&#xff09; 例如&#xff1a;HOperatorSet.GenRectangle2() &#xff0c; 2000, 2000, 0, 2000, 2000 这些数字应该是选取的图片解析范围、尺寸&#xff…

binder是如何在java层和native层实现统一

前言 众所周知&#xff0c;对于binder通信来说&#xff0c;native层通信的基础架构是BpBinder/BBinder&#xff0c;Java层的基础通信架构是BinderProxy/Binder&#xff0c;这两者是如何统一起来的呢&#xff1f; 正文 在binder的跨进程传递数据实现中&#xff0c;数据是包裹在…

Linux环境变量配置文件--《一图胜千言》

这张图是一个关于Linux系统中shell启动时配置文件加载顺序的流程图。图中分为登录shell和非登录shell两种情况&#xff0c;来描述不同配置文件的读取过程。 登录shell&#xff1a; 当用户登录时&#xff0c;会首先检查是否存在/etc/profile文件&#xff0c;如果存在&#xff0c…

酷开科技 | 酷开系统壁纸模式,让过年更有氛围感!

在阵阵爆竹声中&#xff0c;家家户户都沉浸在浓浓的年味中。过年&#xff0c;是团圆&#xff0c;是温暖。团团圆圆的日子里&#xff0c;仪式感不可少&#xff0c;换上一张喜气洋洋的电视壁纸吧&#xff0c;寓意幸福一年又一年。打开酷开系统壁纸模式挑选一张年味十足的壁纸&…

spring boot 3.0如何优雅的使用s3协议连接minio

1.引入pom <dependency><groupId>io.awspring.cloud</groupId><artifactId>spring-cloud-aws-starter-s3</artifactId><version>3.0.3</version> </dependency>添加配置文件 spring:cloud:aws:credentials:access-key: xxxx…

【深度学习】神经网络的建立与推理

文章目录 神经网络&#xff08;neural network&#xff09;的结构神经元中常用的激活函数&#xff08;activation function&#xff09;神经网络的表示神经网络的代码实现使用已学习完毕的神经网络进行推理&#xff08;inference&#xff09; 源代码文件请点击此处&#xff01;…

毕设(二)——NB-IOT通信模块(nb卡通信测试)+gps定位

文章目录 一、关于接线2月1日记录2月4日记录 二、网络连接测试三、HTTP通信3.1 网络调试3.2 nb-lot的连接测试 一、关于接线 如果pico的供电能力不行&#xff0c;可能会直接用4.2V的锂电池对右下引脚进行供电 这个模块只支持nb卡&#xff0c;我哭死&#xff0c;20块钱&#xff…

01 Qt自定义风格控件的基本原则

目录 1.继承原生控件 2.组合原生控件 3.仿写原生控件 PS:后续将继续分享开发实践中各类自定义控件的方法、思路以及组件库 1.继承原生控件 关键字&#xff1a;继承、paintEvent 这里想说的是&#xff0c;Qt的Gui框架在封装原生控件的同时&#xff0c; 也为开发者提供了各…

建站用帝国CMS好还是WordPress好

随着互联网的迅猛发展&#xff0c;内容管理系统(CMS)在网站建设中扮演着越来越重要的角色。在众多CMS中&#xff0c;帝国CMS和WordPress因其强大的功能和广泛的用户基础而备受关注。本文将对这两种CMS进行详细比较&#xff0c;分析它们的优势与不足&#xff0c;以便用户能够根据…

每日一题——LeetCode1464.数组中两元素的最大乘积

这题就是找数组里的最大值和次大值 方法一 排序 var maxProduct function(nums) {nums.sort((a,b)>b-a)return (nums[0] - 1) * (nums[1] - 1); }; 消耗时间和内存情况&#xff1a; 方法二 一次遍历&#xff1a; var maxProduct function(nums) {let first-1,second-…

【Go】五、Grpc 的入门使用

grpc 与 protobuf grpc 使用的是 protobuf 协议&#xff0c;其是一个通用的 rpc 框架&#xff0c;基本支持主流的所有语言、其底层使用 http/2 进行网络通信&#xff0c;具有较高的效率 protobuf 是一种序列化格式&#xff0c;这种格式具有 序列化以及解码速度快&#xff08;…

MySQL的备份与恢复案例

新建数据库 数据库备份&#xff0c;数据库为school&#xff0c;素材如下1.创建student和score表CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address…

Python3类变量

诸神缄默不语-个人CSDN博文目录 在Python中&#xff0c;类变量是定义在类中且在函数体外的变量。类变量可以通过类本身或类的实例来访问。类变量分为三种类型&#xff1a;类属性、实例属性和局部变量。本文将分别介绍这三种类型的类变量&#xff0c;并通过简单易懂的代码示例进…