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
相关文章:
QT-地形3D
QT-地形3D 一、 演示效果二、关键程序三、下载链接 一、 演示效果 二、关键程序 #include "ShaderProgram.h"namespace t3d::core {void ShaderProgram::init() {initializeOpenGLFunctions();loadShaders(); }void ShaderProgram::addShader(const QString &fil…...
C++拷贝构造函数与赋值运算符重载
顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、拷贝构造函数 1.概念 在现实生活中,可能存在一个与你一样的自己,我们称其为双胞胎。 那在创…...
全球各国海外媒体发稿新闻营销推广,英美德意法俄日韩多语言
【本篇由言同数字科技有限公司原创】随着全球市场化程度的加深,品牌出海成为越来越多企业的战略选择。而全球各国媒体的发稿,为品牌出海提供了重要的支持与推动。 第一部分:品牌出海的意义 品牌出海是指企业将自己的品牌、产品和服务推向全…...
将phantomjs制成docker镜像
几个前的一篇文章中介绍了phantomjsecharts生成图表图片的一种方式,但其部署复杂,制作为docker镜像运行就方便多了。文章参见:https://blog.csdn.net/u011943534/article/details/121524397 1、准备echarts 将上次文章中提到过下载的Echart…...
【LeetCode+JavaGuide打卡】Day20|530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
学习目标: 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先 学习内容: 530.二叉搜索树的最小绝对差 题目链接&&文章讲解 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值…...
【工具类】开源照片管理工具pthtoprism
1. pthtoprism 1. pthtoprism 1.1. 安装1.2. 管理照片方式 1.2.1. 直接管理原始照片目录1.2.2. 导入照片 1.3. 界面功能1.4. 参考资料 1.1. 安装 wget https://dl.photoprism.app/docker/docker-compose.yml # 修改 docker-compose.yml 文件,具体参考下面内容 d…...
[ linux网络 ] 网关服务器搭建,综合应用SNAT、DNAT转换,dhcp分配、dns分离解析,nfs网络共享以及ssh免密登录
实验准备工作: 网关服务器安装:dhcp bind (yum install -y dhcp bind bind-utlis) server1安装:httpd (yum install -y httpd) 没有网络就搭建本地yum仓库或者配置网卡使其能够上网。 ( 1)网关服务器…...
MySQL全量备份
一、实验素材 1.创建student和score表 (1) student表 create database school; use schoolCREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) );(…...
【Linux系统化学习】动静态库 | 软硬链接
目录 硬链接和软链接 硬链接 软链接 动态库和静态库 静态库 静态库的生成 静态库的使用 将库打包和使用 动态库 动态库的生成 动态库的使用 库搜索路径 硬链接和软链接 硬链接 上篇文章我们说到真正找到磁盘上的文件并不是文件名,而是inode。其实在…...
linux-firewalld防火墙端口转发
目的:通过统一地址实现对外同一地址暴露 1.系统配置文件开启 ipv4 端口转发 echo "net.ipv4.ip_forward 1" >> /etc/sysctl.confsysctl -p 2.查看防火墙配置端口转发之前的状态 firewall-cmd --statefirewall-cmd --list-all 3.开启 IP 伪装 firewall-cm…...
adobe软件提示This non-genuine Adobe app will be disabled soon【软件版本】
因为电脑上级路由器装了小飞机,导致本机电脑ps等adobe的系列软件出现了 This non-genuine Adobe app will be disabled soon,烦人的狠,之前有写过一篇通过更改host的教程,现在已经失效了,今天为大家分享一个用软件来屏…...
python coding with ChatGPT 打卡第20天| 二叉搜索树:搜索、验证、最小绝对差、众数
相关推荐 python coding with ChatGPT 打卡第12天| 二叉树:理论基础 python coding with ChatGPT 打卡第13天| 二叉树的深度优先遍历 python coding with ChatGPT 打卡第14天| 二叉树的广度优先遍历 python coding with ChatGPT 打卡第15天| 二叉树:翻转…...
Stable Diffusion——基础模型、VAE、LORA、Embedding各个模型的介绍与使用方法
前言 Stable Diffusion(稳定扩散)是一种生成模型,基于扩散过程来生成高质量的图像。它通过一个渐进过程,从一个简单的噪声开始,逐步转变成目标图像,生成高保真度的图像。这个模型的基础版本是基于扩散过程…...
Python自动化部署与配置管理:Ansible与Docker
Ansible 和 Docker 是两种常用于自动化部署和配置管理的工具。Ansible 是一个基于 Python 的自动化运维工具,可以配置管理、应用部署、任务自动化等。而 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中&…...
《摔跤吧爸爸》19岁女星突患皮肌炎离世
从确诊到离世仅10天……罕见病“皮肌炎”! 曾凭借在知名电影《摔跤吧!爸爸》中饰演童年时期“小芭比塔”一角而广受喜爱的年轻演员苏哈尼巴特纳格尔不幸离世,年仅19岁。她的突然逝世引发了全球关注,据苏哈妮的家人表示࿰…...
用结构体数组,完成宠物信息登记管理。
管理宠物的名字,品种,年龄。 实现功能如下: 1.插入宠物信息 2.遍历宠物信息 #include <stdio.h> #define N 100 typedef struct chongwu { char name[20]; char pingz[10]; int age; }cw; void intset_cw(cw *ptr,int *pnum) { printf("请…...
频率主义线性回归和贝叶斯线性回归
整体概述 频率主义(Frequentist)线性回归和贝叶斯(Bayesian)线性回归是统计学中用于数据分析和预测的两种主要方法,特别是在建模关于因变量和自变量之间线性关系的上下文中。尽管两种方法都用于线性回归分析ÿ…...
【感知算法】Dempster-Shafer理论(下)
尝试DS理论应用到自动驾驶地图众包更新。 地图特征变化判断 a mass function is applied to quantify the evidence of the existence. existence state: existenct、non-existent、tenative、conflict ∃ ∄ Ω ϕ \exist \\ \not\exist \\ \Omega \\ \phi ∃∃Ωϕ ma…...
通过conda安装cudatoolikit和cudnn
通过conda安装cudatoolikit和cudnn 安装cudatoolkit安装cudnn安装cudatoolkit-dev 安装cudatoolkit conda install cudatoolkit11.3 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ 安装cudnn conda install cudnn8.5 -c https://mirrors.tuna.tsinghua.edu.…...
vue中使用jsx语法
请注意,在 Vue 中使用 JSX 时,你仍然需要通过 h 函数(通常是一个别名,对应于 createElement 函数)来创建虚拟 DOM 元素。在下面的例子中,h 函数作为 render 函数的参数传入,但在 JSX 语法中你通…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
