当前位置: 首页 > news >正文

网站一个多少钱利为汇wordpress

网站一个多少钱,利为汇wordpress,手机网站建站平台,个人网页制作模板下载1. 说明#xff1a; 整体思路#xff1a;如果想实现动态#xff0c;可以使用一个矩阵和我们给定的坐标值进行相乘#xff0c;实时的改变坐标值 类似于坐标的齐次变换#xff0c;然后使用一个定时器#xff0c;在规定时间内触发重新绘制的函数。 实际效果#xff1a; OP…1. 说明 整体思路如果想实现动态可以使用一个矩阵和我们给定的坐标值进行相乘实时的改变坐标值 类似于坐标的齐次变换然后使用一个定时器在规定时间内触发重新绘制的函数。 实际效果 OPenGL移动旋转图形2. 实现步骤 第一步 在MyOpenGLWidget.h文件中添加一个定时器变量用来实时的调用更新函数让画布在规定的间隔时间内重绘 #ifndef MYOPENGLWIDGET_H #define MYOPENGLWIDGET_H#include QObject #include QWidget #include QTimer #include QTime#include QOpenGLWidget #include QOpenGLFunctions_3_3_Core #include QOpenGLShaderProgram #include QOpenGLTextureclass MyOpenGLWidget : public QOpenGLWidget,QOpenGLFunctions_3_3_Core {Q_OBJECT public:enum Shape{None,Rect,Circle,Triangle};explicit MyOpenGLWidget(QWidget *parent nullptr);void drawShape(Shape shape);void clearGraphic();void setWireFrame(bool wireFrame);protected:virtual void initializeGL() override;virtual void resizeGL(int w, int h) override;virtual void paintGL() override;signals:public slots:void on_timeout();private:Shape m_shape;QOpenGLShaderProgram shaderProgram;QOpenGLTexture *textureStar;QTimer timer; //在之前的基础上再添加一个 定时器 变量 }; #endif // MYOPENGLWIDGET_H第二步 在MyOpenGLWidget.cpp文件中的paintGL()函数内部声明一个矩阵使这个矩阵位移一段距离然后随着时间不停的做旋转最后将这个矩阵作用在顶点着色器的位置坐标上即可实现物体的平移和旋转。 注意矩阵要用左乘且矩阵matrix在代码的体现上应该先平移再旋转否则会乱掉 paintGL()函数代码如下: void MyOpenGLWidget::paintGL() {QMatrix4x4 matrix;unsigned int time QTime::currentTime().msec();matrix.translate(0.5,-0.5,0.0);//先写平移的代码matrix.rotate(time,0.0f,0.0f,1.0f);//再写旋转的代码glClearColor(0.5f,0.9f,0.4f,1.0f);glClear(GL_COLOR_BUFFER_BIT);shaderProgram.bind();textureStar-bind(0);//在渲染前只需开启对应的VAO即可glBindVertexArray(VAO);switch (m_shape) {case Rect://将变量matrix传输到顶点着色器中的变量theMatrix中shaderProgram.setUniformValue(theMatrix,matrix);glDrawElements(GL_TRIANGLES,6,GL_UNSIGNED_INT,indices);break;default:break;}}第三步 在顶点着色器文件中定义变量theMatrix用来接收来自外界数据的传入(matrix)并将变量theMatrix作用在顶点位置坐标上注意是左乘代码如下 #version 330 corelayout(location 0) in vec3 aPos; layout(location 1) in vec3 aColor; layout(location 2) in vec2 aTexCord;out vec3 ourColor; out vec2 texCord;uniform mat4 theMatrix;//定义变量接收外界数据void main() {//将矩阵变换作用在位置坐标上gl_Position theMatrix * vec4(aPos.x,aPos.y,aPos.z,1.0f);ourColor aColor;texCord aTexCord; }MyOpenGLWidget.cpp整天代码 #include myopenglwidget.hunsigned int VBO,VAO;//添加一个索引控制器 unsigned int EBO;float vertices[] {-0.5f,-0.5f,0.0f,0.5f,-0.5f,0.0f,0.0f,0.5f,0.0f };float verticesColorTexture[] { //每一行数据的前三个是位置坐标后三个是颜色值0.5f,0.5f,0.5f,1.0f,0.0f,0.0f,1.0f,1.0f,0.5f,-0.5f,0.0f,0.0f,1.0f,0.0f,1.0f,0.0f,-0.5f,-0.5f,0.0f,0.0f,0.0f,1.0f,0.0f,0.0f,-0.5f,0.5f,0.0f,0.5f,0.5f,0.5f,0.0f,1.0f };//添加索引数据 unsigned int indices[]{0,1,3,1,2,3 };MyOpenGLWidget::MyOpenGLWidget(QWidget *parent) : QOpenGLWidget(parent) {connect(timer,SIGNAL(timeout()),this,SLOT(on_timeout()));//定时器触发连接槽函数timer.start(100);//启动定时器 }void MyOpenGLWidget::drawShape(MyOpenGLWidget::Shape shape) {makeCurrent();m_shape shape;update();doneCurrent(); }void MyOpenGLWidget::clearGraphic() {makeCurrent();drawShape(MyOpenGLWidget::None);makeCurrent();glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);update();doneCurrent(); }void MyOpenGLWidget::setWireFrame(bool wireFrame) {makeCurrent();if(wireFrame){glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);}else{glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);}update();doneCurrent(); }void MyOpenGLWidget::initializeGL() {initializeOpenGLFunctions();//void glGenVertexArrays(GLsizei n, GLuint *arrays)生成顶点数组对象名称// n: 要产生的VAO对象的数量// arrays: 存放产生的VAO对象的名称glGenVertexArrays(1,VAO);// void glGenBuffers(GLsizei n,GLuint *buffers)生成顶点缓冲对象// n: 要产生的VBO对象的数量// arrays: 存放产生的VBO对象的名称glGenBuffers(1,VBO);//初始化索引器glGenBuffers(1,EBO);glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,EBO);glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof (indices),indices,GL_STATIC_DRAW);//绑定VAO和VBOglBindVertexArray(VAO);glBindBuffer(GL_ARRAY_BUFFER,VBO);//在VBO中存入顶点数据glBufferData(GL_ARRAY_BUFFER,sizeof (verticesColorTexture),verticesColorTexture,GL_STATIC_DRAW);//告诉VAO怎么在VBO中拿数据(顶点位置数据)glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,8*sizeof (float),(void*)0);//开启第一个VAOglEnableVertexAttribArray(0);//告诉VAO怎么在VBO中拿数据(颜色数据)glVertexAttribPointer(1,3,GL_FLOAT,GL_FALSE,8*sizeof (float),(void*)(3*sizeof(float)));//开启第二个VAOglEnableVertexAttribArray(1);//告诉VAO怎么在VBO中拿数据(纹理数据)glVertexAttribPointer(2,2,GL_FLOAT,GL_FALSE,8*sizeof (float),(void*)(6*sizeof(float)));//开启第三个VAOglEnableVertexAttribArray(2);//用完之后解除绑定(信息已经被记录下来了)glBindBuffer(GL_ARRAY_BUFFER,0);glBindVertexArray(0);//添加着色器shaderProgram.addShaderFromSourceFile(QOpenGLShader::Vertex,:/shaders/Shaders/shape.vert);shaderProgram.addShaderFromSourceFile(QOpenGLShader::Fragment,:/shaders/Shaders/shape.frag);shaderProgram.link();//添加纹理数据textureStar new QOpenGLTexture(QImage(:/img/images/water.jpg).mirrored());shaderProgram.setUniformValue(textureStar,0); }void MyOpenGLWidget::resizeGL(int w, int h) {Q_UNUSED(w);Q_UNUSED(h);}void MyOpenGLWidget::paintGL() {QMatrix4x4 matrix;unsigned int time QTime::currentTime().msec();matrix.translate(0.5,-0.5,0.0);matrix.rotate(time,0.0f,0.0f,1.0f);glClearColor(0.5f,0.9f,0.4f,1.0f);glClear(GL_COLOR_BUFFER_BIT);shaderProgram.bind();textureStar-bind(0);//在渲染前只需开启对应的VAO即可glBindVertexArray(VAO);switch (m_shape) {case Rect:shaderProgram.setUniformValue(theMatrix,matrix);glDrawElements(GL_TRIANGLES,6,GL_UNSIGNED_INT,indices);break;default:break;}} //定时器槽函数内调用opengl的更新函数 void MyOpenGLWidget::on_timeout() {update(); }持续更新中请大家多多关注…
http://www.w-s-a.com/news/116011/

相关文章:

  • 成都网站关键词优化wordpress价格
  • 网站开发后端站建设 app开发网站
  • 毕业设计做网站好的想法开发网站代码量
  • 西宁网站建设排名wordpress的站点地址如何配置
  • 医院网站建设 价格app和网站开发的成本
  • 常见的网站开发工具山东建设厅官方网站李兴军
  • 二级院系网站建设情况做网站域名是什么意思
  • 网站开发双语辽宁省建设厅网站怎样下载表格
  • 网站后台密码怎么修改百度查重免费入口
  • 衡阳网站页面设计公司绍兴网站设计
  • 青岛手机建站多少钱做图表的网站 免费
  • 如何去建立和设计一个公司网站开封建设教育协会网站
  • 南充市住房和城乡建设局考试网站wordpress 下载模板站
  • 有没有单纯做旅游攻略的网站保定建站方案
  • 2017网站建设报价方案2022年企业所得税税率表一览
  • 可以做婚礼视频的网站有哪些工程公司管理制度
  • 做农产品网站需要做的准备中文手机网站设计案例
  • 福州做网站软件seo搜索优化专员招聘
  • 建站技术博客wordpress响应时间
  • 农业网站模板WordPress安徽省建设工程造价管理协会网站
  • 网站后台策划书破解版手游app平台
  • 宿迁网站建设介绍公司wordpress 文章 分类 页面
  • 建设通同类网站网站设计公司种类
  • 台州专业做网站网站可以个人做吗
  • 个人logo在线生成免费乐陵德州seo公司
  • 网站回答问题app怎么做专业定制网红柴火灶
  • 网站做的最好的公司行业网址大全
  • 内网怎么做网站服务器seo统计
  • 丽水市企业网站建设 微信营销 影视拍摄计算机专业吃香吗
  • 龙岗做网站公司哪家好找到做网站的公司