攻击网站常用方法类似一起做网店的网站

diannao/2026/1/26 16:06:14/文章来源:
攻击网站常用方法,类似一起做网店的网站,自己可以申请网站做外卖吗,wordpress淘宝客排名主题着色器#xff08;Shader#xff09;是运行在GPU上的小程序#xff0c;这些小程序为图形渲染管线的某个特定部分而运行#xff0c;从基本意义上来说#xff0c;着色器只是一种把输入转化为输出的程序。 一、着色器类QOpenGLShaderProgram QOpenGLShaderProgram是Qt中对着…着色器Shader是运行在GPU上的小程序这些小程序为图形渲染管线的某个特定部分而运行从基本意义上来说着色器只是一种把输入转化为输出的程序。 一、着色器类QOpenGLShaderProgram QOpenGLShaderProgram是Qt中对着色器类进行的封装。下面使用 QOpenGLShaderProgram替换掉顶点着色器、片段着色器和着色器程序shaderProgram相关代码。 在项目目录下新建两个文件分别命名为shapes.frag存储片段着色器程序和shapes.vert存储顶点着色器程序 给项目添加资源文件右击项目名称选择“添加新文件” 选择Qt-Qt Resource File点击“Choose” 输入资源文件名如res点击“下一步” 默认点击“完成” 在资源管理界面点击添加-添加前缀 输入前缀名称如/shaders 再点击添加-添加文件 选择刚刚创建的两个文件点击“打开” CtrlS保存两个文件被添加到项目文件树中 把顶点着色器代码拷贝到shapes.vert文件中并进行更改 把片段着色器代码拷贝到shapes.frag文件中并进行更改 更改myopenglwidget.h代码如下包含QOpenGLShaderProgram头文件并创建一个QOpenGLShaderProgram类对象新建一个析构函数用于资源释放对上一节代码的优化 #ifndef MYOPENGLWIDGET_H #define MYOPENGLWIDGET_H #include QOpenGLWidget #include QOpenGLFunctions_3_3_Core #include QOpenGLShaderProgramclass MyOpenGLWidget : public QOpenGLWidget,QOpenGLFunctions_3_3_Core {Q_OBJECTpublic:explicit MyOpenGLWidget(QWidget *parent nullptr);~MyOpenGLWidget();protected:virtual void initializeGL();virtual void resizeGL(int w, int h);virtual void paintGL();private:QOpenGLShaderProgram m_shaderProgram; };#endif // MYOPENGLWIDGET_H 更改myopenglwidget.cpp代码如下 #include myopenglwidget.h #include QDebug//全局的顶点缓冲对象和顶点数组对象 unsigned int VBO; unsigned int VAO;MyOpenGLWidget::MyOpenGLWidget(QWidget *parent) : QOpenGLWidget(parent) {}MyOpenGLWidget::~MyOpenGLWidget() {makeCurrent();glDeleteBuffers(1, VBO);glDeleteVertexArrays(1, VAO);doneCurrent(); }void MyOpenGLWidget::initializeGL() {//初始化OpenGL函数initializeOpenGLFunctions();//1.创建VBO并赋予IDglGenBuffers(1, VBO);//绑定VBO对象glBindBuffer(GL_ARRAY_BUFFER, VBO);//顶点数据float vertices[] {-0.5f, -0.5f, 0.0f,0.5f, -0.5f, 0.0f,0.0f, 0.5f, 0.0f};//把顶点数据复制到显存中glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);//2.创建VAO对象并赋予IDglGenVertexArrays(1, VAO);//绑定VAO对象glBindVertexArray(VAO);//告知显卡如何解析缓冲里的属性值glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);//开启VAO管理的第一个属性值glEnableVertexAttribArray(0);//解绑VBOglBindBuffer(GL_ARRAY_BUFFER, 0);//解绑VAOglBindVertexArray(0);//3.创建一个程序对象m_shaderProgram.addShaderFromSourceFile(QOpenGLShader::Vertex,:/shaders/shapes.vert);m_shaderProgram.addShaderFromSourceFile(QOpenGLShader::Fragment,:/shaders/shapes.frag);bool success m_shaderProgram.link();if(!success)qDebug()ERR: m_shaderProgram.log(); }void MyOpenGLWidget::resizeGL(int w, int h) {Q_UNUSED(w);Q_UNUSED(h); }void MyOpenGLWidget::paintGL() {//设置墨绿色背景glClearColor(0.2f, 0.3f, 0.3f, 1.0f); //状态设置glClear(GL_COLOR_BUFFER_BIT); //状态使用//4.绘制三角形m_shaderProgram.bind(); //激活程序对象glBindVertexArray(VAO); //绑定VAOglDrawArrays(GL_TRIANGLES, 0, 3); //绘图 } 在上面的程序中用如下几行代码替换掉了顶点着色器、片段着色器和着色器程序shaderProgram相关代码 m_shaderProgram.addShaderFromSourceFile(QOpenGLShader::Vertex,:/shaders/shapes.vert); m_shaderProgram.addShaderFromSourceFile(QOpenGLShader::Fragment,:/shaders/shapes.frag); bool success m_shaderProgram.link(); if(!success)qDebug()ERR: m_shaderProgram.log(); 运行结果如下 二、GLSL 着色器是使用一种叫GLSL的类C语言写成的。GLSL是为图形计算量身定制的它包含一些针对向量和矩阵操作的有用特性。 着色器的开头总是要声明版本接着是输入和输出变量、uniform和main函数。每个着色器的入口点都是main函数在这个函数中我们处理所有的输入变量并将结果输出到输出变量中。 一个典型的着色器有下面的结构 #version version_number in type in_variable_name;out type out_variable_name;uniform type uniform_name;int main() {//处理输入并进行一些图形操作...//输出处理过的结果到输出变量out_variable_name weird_stuff_we_processed; } 每个输入变量也叫顶点属性Vertex Attribute。我们能声明的顶点属性是有上限的它一般由硬件来决定。OpenGL确保至少有16个包含4分量的顶点属性可用但是有些硬件允许更多的顶点属性可以查询GL_MAX_VERTEX_ATTRIBS来获取具体的上限 int nrAttributes; glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, nrAttributes); qDebug() Maximun nr of vertex attributes supported: nrAttributes; 通常情况下它至少会返回16个大部分情况下是够用的。 三、数据类型 GLSL中包含的基础数据类型int、float、double、uint和bool。GLSL有两个容器类型向量Vector和矩阵Matrix。 GLSL中的向量是一个可以包含有2/3或4个分量的容器分量的类型可以是前面默认基础类型的任意一个它们可以是下面的形式n代表分量的数量 类型含义vecn包含n个float分量的默认向量bvecn包含n个bool分量的向量ivecn包含n个int分量的向量uvecn包含n个unsigned int分量的向量dvecn包含n个double分量的向量 一个向量的分量可以通过vec.x这种方式获取这里x是指这个向量的第一个分量可以分别使用.x、.y、.z和.w来获取它们的第1/2/3/4个分量GLSL也允许对颜色使用rgba对纹理坐标使用stpq访问相同的分量。 向量这一数据类型允许一些有趣而灵活的分量选择方式叫做重组Swizzling。重组允许下面这样的语法 vec2 someVec; vec4 differentVec someVec.xyxx; vec3 anotherVec differentVec.zyw; vec4 otherVec someVec.xxxx anotherVec.yxzy; 可以使用上面4个字母任意组合来创建一个和原来向量一样长的同类型新向量只要原来向量有那些分量即可也可以把一个向量作为一个参数传给不同的向量构造函数以减少需求参数的数量 vec2 vect vec2(0.5, 0.7); vec4 result vec4(vect, 0.0, 0.0); vec4 otherResult vec4(result.xyz, 1.0); 四、输入与输出in-out 每个着色器使用in和out这两个关键字设定输入和输出只要一个输出变量与下一个着色器的输入匹配它就会传递下去。 顶点着色器的特殊点是它的输入从顶点数据中直接接收。为了定义顶点数据该如何管理使用location这一元数据指定输入变量这样才可以在CPU上配置顶点属性。顶点着色器需要为它的输入提供一个额外的layout标识这样才能把它链接到顶点数据layout(location 0)也可以忽略layout(location 0)标识符通过OpenGL代码中使用glGetAttribLocation查询属性位置值Location。 片段着色器的特殊点是需要一个vec4类型的颜色输出变量。如果你在片段着色器没有定义输出颜色OpenGL会把你的物体渲染为黑色或白色。 如果我们打算从一个着色器向另一个着色器发送数据必须在发送方着色器中声明一个输出在接收方着色器中声明一个输入当类型和名字都一样时OpenGL就会把两个变量链接到一起它们之间就能发送数据了这是在链接程序对象时完成的。 对之前的程序进行改动让顶点着色器为片段着色器设置颜色。 更改shapes.vert文件中的代码如下 #version 330 corelayout (location 0) in vec3 aPos;out vec4 vertexColor; //为片段着色器指定一个颜色void main() {gl_Position vec4(aPos.x, aPos.y, aPos.z, 1.0);vertexColor vec4(0.5, 0.0, 0.0, 1.0); //暗红色 } 更改shapes.frag文件中的代码如下 #version 330 coreout vec4 FragColor;in vec4 vertexColor; //从顶点着色器传来的变量类型和名称相同void main() {FragColor vertexColor; } 在顶点着色器中声明了一个vec4类型变量vertexColor作为输出并在片段着色器中声明一个vec4类型变量vertexColor作为输入由于它们类型和名称相同两个变量会被链接上在顶点着色器中将颜色设置为深红色最终会把深红色传给片段着色器运行结果如下 五、Uniform Uniform是一种从CPU中的应用向GPU中的着色器发送数据的方式但uniform和顶点属性有些不同。首先uniform是全局的Global全局意味着uniform变量必须在每个着色器程序对象中都是独一无二的而且它可以被着色器程序的任意着色器在任意阶段访问。其次无论你把uniform值设置成什么uniform会一直保存它们的数据直到它们被重置或更新。 下面通过uniform来设置三角形的颜色 删除掉shapes.vert文件中变量vertexColor相关代码如下 #version 330 corelayout (location 0) in vec3 aPos;void main() {gl_Position vec4(aPos.x, aPos.y, aPos.z, 1.0); } 在shapes.frag文件中定义uniform变量 #version 330 coreout vec4 FragColor;uniform vec4 ourColor; //从CPU中传值void main() {FragColor ourColor; } 我们在片段着色器中声明了一个uniform vec4的ourColor并把片段着色器的输出颜色设置为uniform值的内容。因为uniform是全局变量我们可以在任何着色器中定义他们而无需通过顶点着色器作为中介。如果你声明了一个uniform却在GLSL代码中没用过编译器会静默移除这个变量导致最后编译出的版本中并不会包含它这可能导致几个非常麻烦的错误。 下面给这个uniform添加数据在void MyOpenGLWidget::initializeGL()函数中添加如下代码 m_shaderProgram.bind(); m_shaderProgram.setUniformValue(vertexColor, 0.0, 1.0, 0.0, 1.0); 更新一个uniform之前你必须先激活着色器程序调用m_shaderProgram.bind()因为它是在当前激活的着色器程序中设置uniform值。使用setUniformValue函数更新uniform值setUniformValue是重载函数鼠标放到setUniformValue函数上摁F2可以看到setUniformValue函数的所有重载形式。 运行结果如下 uniform对于设置一个在渲染迭代中会改变的属性是一个非常有用的工具它也是一个在程序和着色器间数据交互的工具但是假如我们打算为每个顶点设置一个颜色的时候该怎么办呢下面使用更多属性值来解决这个问题。 六、更多属性 之前顶点数据中只有位置数据现在把颜色数据也加进去把三角形的三个角分别指定为红色、绿色和蓝色 float vertices[] {// 位置 // 颜色0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f, // 右下-0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, // 左下0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f // 顶部 }; 由于现在有更多的数据要发送给顶点着色器必须去调整一下顶点着色器使它能够接收颜色值作为一个顶点属性输入。需要注意的是用layout标识符来把aColor属性的位置值设置为1 更改shapes.vert文件中的代码如下 #version 330 core layout (location 0) in vec3 aPos; //位置变量的属性位置值为0 layout (location 1) in vec3 aColor; //颜色变量的属性位置值为1out vec3 ourColor; //向片段着色器输出一个颜色void main() {gl_Position vec4(aPos, 1.0);ourColor aColor; //将ourColor设置为我们从顶点数据那里得到的输入颜色 } 由于我们不再使用uniform来传递片段的颜色现在使用ourColor输出变量我们必须再修改一下片段着色器 更改shapes.frag文件中的代码如下 #version 330 coreout vec4 FragColor;in vec3 ourColor;void main() {FragColor vec4(ourColor, 1.0); } 因为我们添加了另一个顶点属性并且更新了VBO的内存我们就必须重新配置顶点属性指针。更新后的VBO内存中的数据看起来像这样 使用glVertexAttribPointer函数更新顶点格式 //位置属性 glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0); glEnableVertexAttribArray(0); //开启VAO管理的第一个属性值//颜色属性 glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(3 * sizeof(float))); glEnableVertexAttribArray(1); //开启VAO管理的第二个属性值 由于现在有两个顶点属性需要重新计算步长值。为获得数据队列中下一个属性值我们必须向右移动6个float其中3个是位置值另外3个是颜色值这使得步长值为6乘以float的字节数。对于每个顶点来说位置顶点属性在前所以它的偏移量是0颜色属性在后偏移量是3*sizeof(float)。 运行结果如下 我们只提供了3个颜色结果却看到了大调色板这是在片段着色器中进行所谓的片段插值Fragment Interpolation的结果。当渲染一个三角形时光栅化Resterization阶段通常会造成比原指定顶点更多的片段光栅会根据每个片段在三角形形状上所处相对位置决定这些片段的位置基于这些位置它会插值Interpolation所有片段着色器的输入变量比如我们有一个线段上面端点是绿色下面端点是蓝色如果一个片段着色器在线段的70%的位置运行它的颜色输出属性就会是一个绿色和蓝色的线性结合更精确地说是70%绿30%蓝。 注观看OpenGL中文官网https://learnopengl-cn.github.io/和阿西拜的现代OpenGL入门https://ke.qq.com/course/3999604#term_id104150693学习OpenGL

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

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

相关文章

可以做羞羞的游戏视频网站网站平台建设意见

&#xff08;1&#xff09;一个顾客买了价值x元的商品&#xff08;不考虑角、分&#xff09;&#xff0c;并将y元的钱交给售货员&#xff1a;编写代码&#xff1a;在各种币值的钱都很充分的情况下&#xff0c;使售货员能用张数最少的钱币找给顾客 #include<stdio.h> int…

不写编程可以做网站建设做网站公司哪个好

在 Mac 上查找保存的 Wi-Fi 密码的最简单方法之一是从系统设置内的高级 Wi-Fi 首选项页面。您可以通过下面的方式访问此页面来查找您保存的 Wi-Fi 密码。 1.在 Mac 上&#xff0c;选取「苹果菜单」选择「系统设置」。 2.从侧边栏中选择「Wi-Fi」&#xff0c;单击「高级」。 3.…

设计类平台网站wordpress站外搜索

熟悉vue项目的目录结构,在一定程度上能提高我的开发效率及查找文件的速度。 这里比较推荐使用VS code编译器,HBuild-x,webstorm等编译器相比之下逊色不少,用过的就知道有多香。 目录 Vue.js 目录结构 目录说明 VUE入门基本操作 Vue.js 模板语法

网站都不需要什么备案西安做网站公司云速

人工智能时代&#xff0c;最需要学习的编程语言是&#xff1a;python 。笔者是个 python 小白&#xff0c;昨天花了两个小时&#xff0c;第一次成功运行起来 python 项目 。 项目是 powerpoint-extractor &#xff0c;可以将 ppt 文件中的图片提取出来&#xff0c;并输出到固定…

为什么大网站的百度快照更新速度慢还排第一品牌广告设计制作公司网站源码

Photoshop 2023是由Adobe Systems开发和发行的一款强大的图像处理软件&#xff0c;广泛应用于专业摄影师、设计师、艺术家等用户群体。它拥有丰富的功能和工具&#xff0c;可以轻松进行图像编辑、合成、调整和修复等任务。在Photoshop 2023中&#xff0c;智能选择功能得到了升级…

国外做网站公司能赚钱外贸小家电网站推广

&#xfeff;> 本文我们讲解下怎么修改窗口样式&#xff0c;系统默认的窗口非常普通&#xff0c;通常与设计不符&#xff0c;所以我们要自定义&#xff0c;接下来我们讲解下怎么去掉原有样式&#xff0c;怎么实现实现窗口的最小化&#xff0c;最大化和关闭按钮。还有怎么打开…

jsp和php做网站那个快电子商务平台经营者向平台内经营者收取费用

设备驱动与变量定义 为了节省流量采用手动发送&#xff0c;因此不能使用官方驱动&#xff0c;需要使用用户自定义驱动&#xff0c;这里提供百度网盘下载地址&#xff08;见评论区&#xff09;。链接&#xff1a;https://pan.baidu.com/s/1ORy2UFOlHeRCXraYKC1xUA 提取码&#…

广州黄埔区百度词条优化

5201. 给植物浇水 你打算用一个水罐给花园里的 n 株植物浇水。植物排成一行&#xff0c;从左到右进行标记&#xff0c;编号从 0 到 n - 1 。其中&#xff0c;第 i 株植物的位置是 x i 。x -1 处有一条河&#xff0c;你可以在那里重新灌满你的水罐。 每一株植物都需要浇特定…

网站建设一般多少钱新闻企业管理系统作用

密码管理系统实例 需求分析&#xff1a; 1.主界面&#xff08;选项&#xff1a;密码生成&#xff0c;密码查询&#xff0c;密码修改&#xff0c;密码删除&#xff09;2.密码生成&#xff1a;用户输入密码的描述&#xff0c;输入密码的长度&#xff0c;使用随机数生成一个比较复…

洛阳网站建设建站系统杭州网站建设官方蓝韵网络

文章目录 红黑树的定义和性质为什么要发明红黑树&#xff1f;红黑树怎么考总览红黑树的定义实例&#xff1a;一颗红黑树练习&#xff1a;是否符合红黑树的要求一种可能的出题思路补充概念&#xff1a;节点黑高 红黑树的性质 红黑树的查找红黑树的插入实例小结与黑高相关的理论 …

租个国内服务器做网站多少钱企业管理系统项目简介怎么写

Frp内网穿透保姆级教程 windows内网穿透 准备工作 一台具有公网ip的云服务器(我的是ubuntu)frp程序 流程 将frps放到具有公网ip的服务器上将frpc放到需要内网穿透机器上&#xff0c;这里演示的是windows主机配置文件,然后启动 步骤 登陆服务器 ssh ubuntuip 在服务端下载…

上传引用图片 网站wordpress微信小程序

2024Mathorcup数学建模挑战赛&#xff08;妈妈杯&#xff09;C题保姆级分析完整思路代码数据教学 C题题目&#xff1a;物流网络分拣中心货量预测及人员排班 因为一些不可抗力&#xff0c;下面仅展示部分代码&#xff08;很少部分部分&#xff09;和部分分析过程&#xff0c;其…

优化网站做内链接wordpress ecommerce theme

文章目录 专栏导读1、什么是Python&#xff1f;列出 Python 在技术领域的一些流行应用。2、在目前场景下使用Python语言作为工具有什么好处&#xff1f;3、Python是编译型语言还是解释型语言&#xff1f;4、Python 中的“#”符号有什么作用&#xff1f;5、可变数据类型和不可变…

建设一个网站app需要多少钱seo必备软件

题目描述 本题要求将输入的任意3个整数从小到大输出。 输入格式: 输入在一行中给出3个整数&#xff0c;其间以空格分隔。 输出格式: 在一行中将3个整数从小到大输出&#xff0c;其间以“->”相连。 输入样例: 4 2 8输出样例: 2->4->8 程序代码 #include<stdio.h&…

access做网站数据方法53套网站源码

文章目录 题目描述测试样例算法原理算法实现参考资料 题目描述 在nxn格的棋盘上放置彼此不受攻击的n格皇后。按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在nxn格的棋盘上放置n个皇后&#xff0c;任何2个皇后不放在同…

合肥工程建设信息网站特种设备企业服务平台

Windows如何查看端口占用情况 方法1. cmd命令行执行netstat命令&#xff0c;查看端口占用情况 netstat -ano 以上命令输出太多信息&#xff0c;不方便查看&#xff0c;通过如下命令搜索具体端口占用情况&#xff0c;例如&#xff1a;8080端口 netstat -ano | findstr "…

网站的费用可以做无形资产吗网站建设丿金手指稳定

生产替代物料最近在InfoQ上&#xff0c;Aliasei Papou发表了一篇关于他的一些实验的文章 &#xff0c;该实验在线程之间进行了高性能的消息交换。 本文中有许多示例&#xff0c;但我将重点介绍多生产者案例。 文章显示的一种优化方法是&#xff0c;如果您知道初始化时拥有的生产…

网站路径怎么做wordpress zenmeyong

C程序设计语言 &#xff08;第二版&#xff09; 练习 4-14 练习 4-14 定义宏swap(t, x, y)以交换t类型的两个参数。&#xff08;使用程序块结构会对你有所帮助。&#xff09; 注意&#xff1a;代码在win32控制台运行&#xff0c;在不同的IDE环境下&#xff0c;有部分可能需要…

网站建设公司怎么算专业07073游戏网官网

不使用游戏引擎&#xff0c;只使用Java SDK开发游戏的学习。 游戏原理 图片来自某大佬视频讲解 原理结合实际代码 public class GamePanel extends Jpanel implements Runnable {...run(){}// 详情看下图... }项目结构 运行效果 代码code 在我的下载里面可以找到&#xf…

电子网站建设价格html5移动网站开发流程

你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字&#xff1a; ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转&#xff1a;例如把 ‘9’ 变为 ‘0’&#xff0c;‘0’ 变为 ‘9’ 。每次旋转都只能旋转一个拨轮的一位…