寻找外贸客户的网站手机端怎么变成电脑端

news/2025/10/4 3:48:28/文章来源:
寻找外贸客户的网站,手机端怎么变成电脑端,东莞人才市场官网,新新手手网网站站建建设设1前面我们已经熟悉了opengl自定义顶点生成一个立方体#xff0c;并且我们实现了立方体的旋转#xff0c;光照等功能。下面我们来用opengl来加载一个obj文件。准备我们首先准备一个简单的obj文件#xff08;head.obj#xff09;。资源在本页下载 2 在obj文件里面#xff0c… 1前面我们已经熟悉了opengl自定义顶点生成一个立方体并且我们实现了立方体的旋转光照等功能。下面我们来用opengl来加载一个obj文件。准备我们首先准备一个简单的obj文件head.obj。资源在本页下载 2 在obj文件里面我们关注下 v 字段和f字段 v 字段就是顶点  f字段代表了面意思是每个面的顶点编号。 结构如下 v -0.99179999 -2.98999995 4.05410025  表示顶点值 f 12791 127 126   表示这个面的三个点在 v 里面的index值是12791 也是就是v[12791]的值的顶点是这个面的顶点值。 3 下面我们来解析obj文件 bool load(QString fileName, QVectorfloat vPoints) {if (fileName.mid(fileName.lastIndexOf(.)) ! .obj fileName.mid(fileName.lastIndexOf(.)) ! .OBJ){qDebug() file is not a obj file.;return false;}QFile objFile(fileName);if (!objFile.open(QIODevice::ReadOnly)){qDebug() open fileName failed;return false;}else{qDebug() open fileName success!;}QVectorfloat vertextPoints, texturePoints, normalPoints;QVectorFace facesIndexs;while (!objFile.atEnd()){QByteArray lineData objFile.readLine();QListQByteArray strValues lineData.trimmed().split( );QString dataType strValues.takeFirst();for(int i0;istrValues.size();i){double nData strValues.at(i).toDouble();QString strTemp QString::number(nData,f,4);if (dataType v){vertextPoints.append(strTemp.toFloat());}else if (dataType vt){texturePoints.append(strValues.at(i).toFloat());}else if (dataType vn){normalPoints.append(strValues.at(i).toFloat());}else if (dataType f){Face ondInfo;if(strValues.at(i).contains(/)){QListQByteArray strTemp strValues.at(i).split(/);if(strTemp.size()2){ondInfo.vertices strTemp.at(0).toInt();ondInfo.texCoords strTemp.at(1).toInt();}else if(strTemp.size()3){ondInfo.vertices strTemp.at(0).toInt();ondInfo.texCoords strTemp.at(1).toInt();ondInfo.normals strTemp.at(2).toInt();}}else{ondInfo.vertices strValues.at(i).toInt();//qDebug()Face ondInfoondInfo.vertices;}facesIndexs.append(ondInfo);}}}objFile.close();int count 0;for (int i0;ifacesIndexs.size();i){int vIndex facesIndexs[i].vertices - 1;if(vIndex * 3 vertextPoints.size() ||vIndex * 3 1 vertextPoints.size()||vIndex * 3 2vertextPoints.size() ){vPoints vertextPoints.at(vIndex * 3);vPoints vertextPoints.at(vIndex * 3 1);vPoints vertextPoints.at(vIndex * 3 2);// qDebug()vIndexivertextPoints.size()vIndex * 3;}else{// qDebug()vIndex errorivertextPoints.size()vIndex * 3;}}vertextPoints.clear();texturePoints.clear();normalPoints.clear();facesIndexs.clear();return true; } 接着我们来写加载代码 和以前的一样就是写glsl语句 #ifndef TESTOBJOPENGL_H #define TESTOBJOPENGL_H#include QObject #include QWidget #include QOpenGLWidget #include QOpenGLExtraFunctions #include QOpenGLBuffer #include QOpenGLShaderProgram #include QOpenGLVertexArrayObject #include QTimer #include QOpenGLTexture #include QOpenGLWidget #include QOpenGLFunctions #include QOpenGLBuffer #include QOpenGLVertexArrayObject #include QTimer #include QMouseEventQT_FORWARD_DECLARE_CLASS(QOpenGLShaderProgram); QT_FORWARD_DECLARE_CLASS(QOpenGLTexture) class testobjOpengl : public QOpenGLWidget, protected QOpenGLFunctions { public:testobjOpengl( QWidget *parentnullptr);~testobjOpengl(); protected:void initializeGL() override;void paintGL() override;void resizeGL(int width, int height) override;void rotateBy(int xAngle, int yAngle, int zAngle);bool load(QString fileName, QVectorfloat vPoints);struct Face{int vertices;int texCoords;int normals;Face(){vertices -1;texCoords -1;normals -1;}}; private:QVectorfloat m_vPoints;int m_xRot;int m_yRot;int m_zRot;QOpenGLShaderProgram *m_program nullptr;QOpenGLVertexArrayObject vao;QOpenGLBuffer vbo;QVector3D cameraPos;QVector3D cameraTarget;QVector3D cameraDirection;QOpenGLTexture *texture;int m_projMatrixLoc;int m_mvMatrixLoc;int m_normalMatrixLoc;int m_lightPosLoc;QMatrix4x4 m_proj;QMatrix4x4 m_camera;QMatrix4x4 m_world;QVector3D m_camera_pos;QTimer* timer;int m_yPos0;int m_zPos0;};#endif // TESTOBJOPENGL_H#include testobjopengl.hstatic const char *vertexShaderSourceCore #version 330\nlayout (location 0) in vec4 vertex;\nlayout (location 1) in vec3 normal;\nout vec3 vert;\nout vec3 vertNormal;\nuniform mat4 matrix;\nuniform mat4 view;\nuniform mat4 projection;\nuniform mat3 normalMatrix;\nvoid main() {\n vert vertex.xyz;\n vertNormal normalMatrix * normal;\n gl_Position projection*view* matrix * vertex;\n}\n; static const char *fragmentShaderSourceCore #version 150\nin highp vec3 vert;\nin highp vec3 vertNormal;\nout highp vec4 fragColor;\nuniform highp vec3 lightPos;\nvoid main() {\n highp vec3 L normalize(lightPos - vert);\n highp float NL max(dot(normalize(vertNormal), L), 0.0);\n highp vec3 color vec3(1.0, 1.0, 0.0);\n highp vec3 col clamp(color * 0.2 color * 0.8 * NL, 0.0, 1.0);\n fragColor vec4(col, 1.0);\n}\n;testobjOpengl::testobjOpengl(QWidget *parent): QOpenGLWidget(parent),m_xRot(0),m_yRot(0),m_zRot(0) {m_vPoints.clear();cameraPos QVector3D(0, 0, 3);QString strTemp F:/Tree2/head.obj;bool ret load(strTemp,m_vPoints);if(ret){timer new QTimer;timer-setInterval(100);connect(timer,QTimer::timeout,this,[]{qDebug()timeout;rotateBy(10 * 16, 10 * 16, -1 * 16);});timer-start();}else{qDebug()1111111111111111;}} void testobjOpengl::rotateBy(int xAngle, int yAngle, int zAngle) {float cameraSpeed 0.2;m_camera_pos - cameraSpeed * QVector3D(0, 0, -1);//由远到近if(m_yPos100){m_yPos 0;}m_yPos10;if(m_zPos100){m_zPos 0;}m_zPos10;// m_camera_pos QVector3D(0, m_yPos, m_zPos);//由远到近// m_camera_pos.setY(m_yPos);m_xRot xAngle;m_yRot yAngle;m_zRot zAngle;update();//timer-stop(); } testobjOpengl::~testobjOpengl() {}void testobjOpengl::initializeGL() {initializeOpenGLFunctions();m_program new QOpenGLShaderProgram;m_program-addShaderFromSourceCode(QOpenGLShader::Vertex, vertexShaderSourceCore);m_program-addShaderFromSourceCode(QOpenGLShader::Fragment, fragmentShaderSourceCore);if (m_program-link()){qDebug() link success!;}else{qDebug() link failed;}m_program-bindAttributeLocation(vertex, 0);m_program-bindAttributeLocation(normal, 1);m_program-link();m_program-bind();// m_projMatrixLoc m_program-uniformLocation(projection); // m_mvMatrixLoc m_program-uniformLocation(matrix); // m_normalMatrixLoc m_program-uniformLocation(normalMatrix); // m_lightPosLoc m_program-uniformLocation(lightPos);vbo.create();vbo.bind();vbo.allocate(m_vPoints.data(), m_vPoints.size() * sizeof(float));QOpenGLFunctions *f QOpenGLContext::currentContext()-functions();f-glEnableVertexAttribArray(0);f-glEnableVertexAttribArray(1);f-glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), nullptr);f-glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), reinterpret_castvoid *(3 * sizeof(GLfloat)));vbo.release();m_program-setUniformValue(m_lightPosLoc, QVector3D(10, 10, 10)); }void testobjOpengl::paintGL() {glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glEnable(GL_DEPTH_TEST);glEnable(GL_CULL_FACE);QMatrix4x4 m;//m.ortho(-0.5f, 0.5f, 0.5f, -0.5f, 4.0f, 15.0f);m.setToIdentity();m.translate(0.0f, 0.0f, 0.0f);m.rotate(m_xRot / 16.0f, 1.0f, 0.0f, 0.0f);m.rotate(90, 0.0f, 1.0f, 0.0f);m.rotate(0, 0.0f, 0.0f, 1.0f);m.scale(0.5);QMatrix4x4 view;view.setToIdentity();view.lookAt(QVector3D(0, 20, 20), QVector3D(0,0,0), QVector3D(1,0,0));m_program-bind();m_program-setUniformValue(projection, m_proj);m_program-setUniformValue(matrix, m);m_program-setUniformValue(view, view);m_program-setUniformValue(lightPos, QVector3D(10, 10, 0));QMatrix3x3 normalMatrix m.normalMatrix();m_program-setUniformValue(normalMatrix, normalMatrix);glDrawArrays(GL_TRIANGLES, 0, m_vPoints.size()/3);m_program-release(); }void testobjOpengl::resizeGL(int width, int height) {m_proj.setToIdentity();m_proj.perspective(45.0f, GLfloat(width) / height, 0.01f, 100.0f); } bool testobjOpengl::load(QString fileName, QVectorfloat vPoints) {if (fileName.mid(fileName.lastIndexOf(.)) ! .obj fileName.mid(fileName.lastIndexOf(.)) ! .OBJ){qDebug() file is not a obj file.;return false;}QFile objFile(fileName);if (!objFile.open(QIODevice::ReadOnly)){qDebug() open fileName failed;return false;}else{qDebug() open fileName success!;}QVectorfloat vertextPoints, texturePoints, normalPoints;QVectorFace facesIndexs;while (!objFile.atEnd()){QByteArray lineData objFile.readLine();QListQByteArray strValues lineData.trimmed().split( );QString dataType strValues.takeFirst();for(int i0;istrValues.size();i){double nData strValues.at(i).toDouble();QString strTemp QString::number(nData,f,4);if (dataType v){vertextPoints.append(strTemp.toFloat());}else if (dataType vt){texturePoints.append(strValues.at(i).toFloat());}else if (dataType vn){normalPoints.append(strValues.at(i).toFloat());}else if (dataType f){Face ondInfo;if(strValues.at(i).contains(/)){QListQByteArray strTemp strValues.at(i).split(/);if(strTemp.size()2){ondInfo.vertices strTemp.at(0).toInt();ondInfo.texCoords strTemp.at(1).toInt();}else if(strTemp.size()3){ondInfo.vertices strTemp.at(0).toInt();ondInfo.texCoords strTemp.at(1).toInt();ondInfo.normals strTemp.at(2).toInt();}}else{ondInfo.vertices strValues.at(i).toInt();//qDebug()Face ondInfoondInfo.vertices;}facesIndexs.append(ondInfo);}}}objFile.close();int count 0;for (int i0;ifacesIndexs.size();i){int vIndex facesIndexs[i].vertices - 1;if(vIndex * 3 vertextPoints.size() ||vIndex * 3 1 vertextPoints.size()||vIndex * 3 2vertextPoints.size() ){vPoints vertextPoints.at(vIndex * 3);vPoints vertextPoints.at(vIndex * 3 1);vPoints vertextPoints.at(vIndex * 3 2);// qDebug()vIndexivertextPoints.size()vIndex * 3;}else{// qDebug()vIndex errorivertextPoints.size()vIndex * 3;}}vertextPoints.clear();texturePoints.clear();normalPoints.clear();facesIndexs.clear();return true; }我们开始调用 testobjOpengl w; w.show(); 运行结果

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

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

相关文章

3GPP 常用协议标准

3GPP 常用协议标准2025-10-04 03:42 flyfish163 阅读(0) 评论(0) 收藏 举报系统架构 TS 38.401  NG-RAN; Architecture description TS 38.300  NR; NR and NG-RAN Overall description; Stage-2 TS 23.501  …

wordpress调用api接口网站seo策略

在嵌入式平台中如何实现广域网下的远程登录控制? 文章目录1 项目需要2 解决方案3 首先实现局域网下的VNC远程控制4 总结1 项目需要 在IM.X6q硬件平台,Linux4.1.15内核版本中实现在广域网下进行远程登录控制。主控机为Windows机器,被控机是IM…

北京建设部安全员证书查询网站婚纱网站内容制作

1、当发送的报文出问题的时候,会发送一个 ICMP 的差错报文来报告错误,但是如果 ICMP 的差错报文也出问题了呢? 答:不会导致产生 ICMP 差错报文的有: ICMP 差错报文(ICMP 查询报文可能会产生 ICMP 差错报文…

注册域名去哪个网站好企业年报信息查询

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 通过IDE自动生成的代码调用webservice服务 我们的IDE一般来说都是能够通过各种各样的工具来支持我们的开发使我们的开发变得更加的便捷。…

东莞清洁服务网站建设抓取式网站建设

一. MQ 简介 消息队列作为高并发系统的核心组件之一,能够帮助业务系统结构提升开发效率和系统 稳定性,消息队列主要具有以下特点: 削峰填谷:主要解决瞬时写压力大于应用服务能力导致消息丢失、系统奔溃等问题系统解耦:解决不同重要程度、不…

长葛住房和城乡建设局网站怎么管理购物网站

前言 ARM SOC 有别于单片机 MCU 的一点就是,ARM SOC 的 GPIO 比较少,基本上引脚都有专用的功能,因为它很少去接矩阵键盘、众多继电器、众多 LED。 但有时 ARM SOC 又需要三五个按键,这时候 LRADC 就是一个不错的选择,…

网页制作与网站建设实战教程视频公司没注册可以做网站吗

>> (右移运算) x >> y:表示将x的二进制值右移y位。 正数是直接右移y位,则高位(最左边)补y个0。 负数是求补码,然后右移y位,最高位补y个1,再求反码&#xff…

网站挂到国外服务器做网站设计

思路 构建一个单调递增的队列类型,pop和push操作在队列内部进行特殊定义(队头存储当前滑动窗口的最大值;队列中比插入元素小的队尾元素均要移除;比队尾元素小的元素直接插入队列;当滑动窗口移除的元素和队头元素相等时…

怎么在移动端网站下面做联系人雄安专业网站建设电话

粘贴一篇关于权限的文章:最近在做个东西,巧合碰到了sharedUserId 的问题,所以收集了一些资料,存存档备份。安装在设备中的每一个apk文件,Android 给每个 APK 进程分配一个单独的用户空间,其 manifest 中的 userid 就是…

广州高档网站建设微信公众号制作模板免费

安防视频监控国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入,并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强,支持将接入的视频流进行全终端、全平台分发&#xff…

php网站开发职责重庆公司注册网站

MyBatis关联查询(二、一对多查询) 需求:查询所有用户信息及用户关联的账户信息。 分析:用户信息和他的账户信息为一对多关系,并且查询过程中如果用户没有账户信息,此时也要将用户信息查询出来&#xff0c…

丽水市城乡建设局网站公司网站用什么语言开发

摘要 信息技术的发展推动了管理系统的进步,目前各种行业都积极参与管理系统的建设工作。特别是疫情带来的影响,让传统行业逐渐认识到只有通过在线管理才能继续的发展。房产销售平台是为求租者提供房源必备的平台,如何找到一个好的房源是生活…

做seo必须有网站吗网站后台管理入口

最近在把以前写的一个项目改成用easyui做前端。过程中遇到了不少问题。其中一个就是datagrid不能很好的布局。想了好多办法都有局限。最后想到会不会是布局(easyui-layout)的问题,经过实验,最后问题解。 1:比如在项目中…

网站出现的问题吗宁波高端网站设计价格

1.什么是atomikos Atomikos是一个轻量级的分布式事务管理器,实现了Java Transaction API (JTA)规范,可以很方便的和Spring Boot集成,支持微服务场景下跨节点的全局事务。Atomikos公司官方网址为:https://www.atomikos.com/。其旗下…

校区网站建设30人的网站建设公司年利润是多少

基础概念公式推到可参考该专栏下的前几篇博文。 纬向破斜组织图: 下半部分(从左往右):,3上2下2上1下,右斜,飞数为1 上半部分(从下往上):,2上2下1上3下。左斜,飞数为-1 通过分析可…

设计商城商务网站营销案例最新

7. out_of_focus_deblur_filter.cpp使用维纳滤波器来恢复失焦的图像 代码的主要功能是通过使用维纳滤波器来恢复失焦的图像,它读取一个灰度图像文件,对其进行滤波操作,并将结果保存为新文件。这个过程包括计算点扩散函数(PSF),执行…

通辽市做网站公司版权申请网站

目录 1.触发器1.1.DDL触发器1.2.DML触发器1.3.创建触发器1.3.1.创建DML触发器1.3.2.创建DDL触发器1.3.3.嵌套触发器1.3.4.递归触发器1.4.管理触发器1.触发器 触发器是一种特殊的存储过程,与表紧密关联。 1.1.DDL触发器 当服务器或数据库中发生数据定义语言&#xff…

网站建设推广熊掌号鞋网站建设

🎶Leetcode 151. 反转字符串中的单词 难度:中等 ✨题目描述: 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 …

电脑做服务器建网站并让外网访问成都网页设计培训哪家好

在这里和下一级别的分析中有必要先讲一下这个h->mb.cache(没法讲,就是cache!)。 x264_macroblock_cache_load将参考帧中某位置的(重建后)数据保存进cache,供参考和反复使用。 x264_macroblock_cache_s…

建站的方式有哪些创建一个餐饮公司的模板

1. Webpack 当前Web开发面临的困境 文件依赖关系错综复杂静态资源请求效率低模块化支持不友好浏览器对高级JavaScript特性兼容程度低 1.1 webpack概述 webpack是一个流行的前端项目构建工具,可以解决当前web开发中所面临的困境. webpack提供了友好的模块化支持,以及代码压…