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

wordpress怎么用地图吗广西关键词优化公司

wordpress怎么用地图吗,广西关键词优化公司,安康市网站建设,营销网站建设制作设计1 qtopengl 实现纹理贴图,平移旋转,绘制三角形,方形-CSDN博客 在上篇文章里面我已经学会了给贴图,并且旋转,那我们如何动态的显示2D的图片呢,那我们在qt里面是如何实现呢,定时器连续更新。 上…

1 qt+opengl 实现纹理贴图,平移旋转,绘制三角形,方形-CSDN博客

在上篇文章里面我已经学会了给贴图,并且旋转,那我们如何动态的显示2D的图片呢,那我们在qt里面是如何实现呢,定时器连续更新。

上代码 在第一篇的代码上加上定时器,看看效果

static const char *vertexShaderSource ="#version 330\n""layout (location = 0) in vec3 aPos;\n"     // 位置变量的属性位置值为0"layout (location = 1) in vec3 aColor;\n"     // 颜色变量的属性位置值为1"layout (location = 2) in vec2 aTexCoord;\n"  //纹理变量的属性位置值为2"out vec3 ourColor;\n"                     // 为片段着色器指定一个颜色输出"out vec2 TexCoord;\n"                     // 为片段着色器指定一个纹理输出"uniform mat4 transform;\n""void main(){\n""gl_Position =  transform * vec4(aPos, 1.0);\n"    //顶点信息为4个值向量   // 注意我们如何把一个vec3作为vec4的构造器的参数"ourColor = aColor;\n"        // 输出颜色变量==输入颜色"TexCoord = aTexCoord;\n"    // 输出纹理变量==输入纹理"}\n";static const char *fragmentShaderSource ="#version 330\n""out vec4 FragColor;\n"     //输出颜色"in vec3 ourColor;\n"      //输入的颜色== vertexShaderSource(这里面的输入颜色)"in vec2 TexCoord;\n"      //输入的纹理== vertexShaderSource(这里面的输入纹理)"uniform sampler2D texture1;\n"  //得到输入的纹理"uniform sampler2D texture2;\n"  //得到输入的纹理"void main()""{\n""FragColor = mix(texture(texture1, TexCoord), texture(texture2, TexCoord), 0.7)* vec4(ourColor, 1.0);\n""}\n";myGlWidget::myGlWidget(QWidget *parent):QOpenGLWidget(parent), m_ebo(QOpenGLBuffer::IndexBuffer), vbo(QOpenGLBuffer::VertexBuffer)
{timer = new QTimer;timer->setInterval(50);connect(timer,&QTimer::timeout,this,[=]{m_angle +=30;m_x+=0.01;if(m_angle==360){m_angle = 0;}if(m_x>1){m_x=-0.6f;}update();qDebug()<<"1233"<<m_angle;});timer->start();
}myGlWidget::~myGlWidget()
{}
void myGlWidget::resizeGL(int w, int h)
{this->glViewport(0,0,w,h);                //定义视口区域
}
void myGlWidget::paintGL()
{this->glClearColor(0.1f,0.5f,0.7f,1.0f);  //设置清屏颜色this->glClear(GL_COLOR_BUFFER_BIT);QMatrix4x4 matrix;matrix.setToIdentity();matrix.translate(m_x,0.0,0.0);matrix.rotate(m_angle,0,0,1);matrix.scale(0.5);//    QMatrix4x4 matrix;
//    matrix.setToIdentity();
//    //matrix.translate(0, 0, 0);      // x往左移动0.5 y往上移动0.5(opengl中的y方向和屏幕方向是反的)
//    matrix.rotate(45, 0, 0, 1);
//    matrix.scale(0.5);// 渲染Shadervao.bind();//m_texture->bind();program->setUniformValue("texture1", 0);m_texture->bind(0);program->setUniformValue("texture2", 1);m_texture2->bind(1);program->setUniformValue("transform", matrix);//glDrawElements(GL_TRIANGLES, 4, GL_UNSIGNED_INT, 0);glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);//绘制纹理    //绘制3个定点,样式为三角形
}void myGlWidget::initializeGL()
{// 为当前环境初始化OpenGL函数initializeOpenGLFunctions();glClearColor(1.0f, 1.0f, 1.0f, 1.0f);    //设置背景色为白色//初始化纹理对象m_texture  = new QOpenGLTexture(QOpenGLTexture::Target2D);m_texture->setData(QImage(":/cube1.png").mirrored()); //加载砖块图片m_texture->setMinMagFilters(QOpenGLTexture::LinearMipMapLinear,QOpenGLTexture::Nearest);//设置缩小和放大的方式,缩小图片采用LinearMipMapLinear线性过滤,并使用多级渐远纹理邻近过滤,放大图片采用:Nearest邻近过滤m_texture->setWrapMode(QOpenGLTexture::DirectionS,QOpenGLTexture::Repeat);m_texture->setWrapMode(QOpenGLTexture::DirectionT,QOpenGLTexture::Repeat);//m_texture->allocateStorage();//   //初始化纹理对象m_texture2  = new QOpenGLTexture(QOpenGLTexture::Target2D);m_texture2->setData(QImage(":/0.png").mirrored()); //返回图片的镜像,设置为Y轴反向,因为在opengl的Y坐标中,0.0对应的是图片底部m_texture2->setMinMagFilters(QOpenGLTexture::LinearMipMapLinear,QOpenGLTexture::Nearest);//设置缩小和放大的方式,缩小图片采用LinearMipMapLinear线性过滤,并使用多级渐远纹理邻近过滤,放大图片采用:Nearest邻近过滤m_texture2->setWrapMode(QOpenGLTexture::DirectionS,QOpenGLTexture::Repeat);m_texture2->setWrapMode(QOpenGLTexture::DirectionT,QOpenGLTexture::Repeat);//m_texture2->allocateStorage();//创建着色器程序program = new QOpenGLShaderProgram;program->addShaderFromSourceCode(QOpenGLShader::Vertex,vertexShaderSource);program->addShaderFromSourceCode(QOpenGLShader::Fragment,fragmentShaderSource);program->link();program->bind();//激活Program对象//初始化VBO,将顶点数据存储到buffer中,等待VAO激活后才能释放
//   float vertices[] = {
//           // 位置              // 颜色             //纹理
//           // positions          // colors           // texture coords
//           0.5f,  0.5f, 0.0f,   1.0f, 0.0f, 0.0f,   1.0f, 1.0f, // top right
//           0.5f, -0.5f, 0.0f,   0.0f, 1.0f, 0.0f,   1.0f, 0.0f, // bottom right
//           -0.5f, -0.5f, 0.0f,   0.0f, 0.0f, 1.0f,   0.0f, 0.0f, // bottom left
//           -0.5f,  0.5f, 0.0f,   1.0f, 1.0f, 0.0f,   0.0f, 1.0f  // top left
//       };float vertices[] = {//     ---- 位置 ----       ---- 颜色 ----     - 纹理坐标 --1.0f,  -1.0f, 1.0f, 1.0f, 0.0f, 0.0f,   0.0f, 1.0f,   // 右上1.0f, -1.0f, 1.0f,   0.0f, 1.0f, 0.0f,   1.0f, 1.0f,   // 右下-1.0f, 1.0f, 1.0f,    0.0f, 0.0f, 1.0f,   0.0f, 0.0f,   // 左下1.0f,  1.0f, 1.0f,    1.0f, 1.0f, 0.0f,   1.0f, 0.0f    // 左上};vbo.create();vbo.bind();              //绑定到当前的OpenGL上下文,vbo.allocate(vertices, sizeof(vertices));vbo.setUsagePattern(QOpenGLBuffer::StaticDraw);  //设置为一次修改,多次使用//初始化VAO,设置顶点数据状态(顶点,法线,纹理坐标等)vao.create();vao.bind();// void setAttributeBuffer(int location, GLenum type, int offset, int tupleSize, int stride = 0);program->setAttributeBuffer(0, GL_FLOAT, 0,                  3, 8 * sizeof(float));   //设置aPos顶点属性program->setAttributeBuffer(1, GL_FLOAT, 3 * sizeof(float),  3, 8 * sizeof(float));   //设置aColor顶点颜色program->setAttributeBuffer(2, GL_FLOAT, 6 * sizeof(float),  2, 8 * sizeof(float));   //设置aColor顶点颜色//offset:第一个数据的偏移量//tupleSize:一个数据有多少个元素,比如位置为xyz,颜色为rgb,所以是3//stride:步长,下个数据距离当前数据的之间距离,比如右下位置和左下位置之间间隔了:3个xyz值+3个rgb值,所以填入 6 * sizeof(float)program->enableAttributeArray(0); //使能aPos顶点属性program->enableAttributeArray(1); //使能aColor顶点颜色program->enableAttributeArray(2); //使能aColor顶点颜色//解绑所有对象vao.release();vbo.release();}

运行下看看是不是连续旋转起来了,还平移了呢。


文章转载自:
http://wanjiayeastiness.Lgnz.cn
http://wanjiaconcisely.Lgnz.cn
http://wanjiailluviate.Lgnz.cn
http://wanjiasideshow.Lgnz.cn
http://wanjiatelepuppet.Lgnz.cn
http://wanjiaupheld.Lgnz.cn
http://wanjiaveronese.Lgnz.cn
http://wanjianascence.Lgnz.cn
http://wanjiakweichow.Lgnz.cn
http://wanjiatranscendental.Lgnz.cn
http://wanjiahydromancy.Lgnz.cn
http://wanjiacatchy.Lgnz.cn
http://wanjiaislander.Lgnz.cn
http://wanjiacoercive.Lgnz.cn
http://wanjianectarine.Lgnz.cn
http://wanjiaresourcefully.Lgnz.cn
http://wanjiacosmism.Lgnz.cn
http://wanjiaexpansion.Lgnz.cn
http://wanjiaterbium.Lgnz.cn
http://wanjiazymurgy.Lgnz.cn
http://wanjiamultipartite.Lgnz.cn
http://wanjiaadiposity.Lgnz.cn
http://wanjiahalalah.Lgnz.cn
http://wanjiawest.Lgnz.cn
http://wanjiapreposterously.Lgnz.cn
http://wanjiarhotacism.Lgnz.cn
http://wanjiaacoustoelectronics.Lgnz.cn
http://wanjiaalcoranist.Lgnz.cn
http://wanjiaquintile.Lgnz.cn
http://wanjiaheterology.Lgnz.cn
http://wanjiashemite.Lgnz.cn
http://wanjiaanabas.Lgnz.cn
http://wanjiaerenow.Lgnz.cn
http://wanjiathermoset.Lgnz.cn
http://wanjiadarby.Lgnz.cn
http://wanjiaasbestus.Lgnz.cn
http://wanjiaattrited.Lgnz.cn
http://wanjiatenty.Lgnz.cn
http://wanjiazilpah.Lgnz.cn
http://wanjiaundersheriff.Lgnz.cn
http://wanjiagascogne.Lgnz.cn
http://wanjiastylise.Lgnz.cn
http://wanjiapiranesi.Lgnz.cn
http://wanjiagraininess.Lgnz.cn
http://wanjiaunlace.Lgnz.cn
http://wanjiatransderivational.Lgnz.cn
http://wanjiaalterable.Lgnz.cn
http://wanjiaaggressor.Lgnz.cn
http://wanjiahyperparathyroidism.Lgnz.cn
http://wanjiagpl.Lgnz.cn
http://wanjiaputrilage.Lgnz.cn
http://wanjiaunutterably.Lgnz.cn
http://wanjiasatai.Lgnz.cn
http://wanjiagracia.Lgnz.cn
http://wanjiaaphemic.Lgnz.cn
http://wanjiaworshipful.Lgnz.cn
http://wanjiauncivilized.Lgnz.cn
http://wanjiaremelt.Lgnz.cn
http://wanjiahomoiothermal.Lgnz.cn
http://wanjiascripturally.Lgnz.cn
http://wanjiacontralateral.Lgnz.cn
http://wanjiaascii.Lgnz.cn
http://wanjiaarteriolar.Lgnz.cn
http://wanjiaaminopterin.Lgnz.cn
http://wanjiaauditoria.Lgnz.cn
http://wanjiamarg.Lgnz.cn
http://wanjiabibliography.Lgnz.cn
http://wanjiachevrotain.Lgnz.cn
http://wanjiaassab.Lgnz.cn
http://wanjiawholeness.Lgnz.cn
http://wanjiaunderdone.Lgnz.cn
http://wanjiadavis.Lgnz.cn
http://wanjiafogged.Lgnz.cn
http://wanjiabillow.Lgnz.cn
http://wanjiacipher.Lgnz.cn
http://wanjiatouraco.Lgnz.cn
http://wanjiasalientian.Lgnz.cn
http://wanjiapainterly.Lgnz.cn
http://wanjiatyrolite.Lgnz.cn
http://wanjiaplonko.Lgnz.cn
http://www.15wanjia.com/news/105750.html

相关文章:

  • 做网站需要多大的内存广东省广州市白云区
  • 渭南公司做网站环球网今日疫情消息
  • 网站开发例子宁波seo行者seo09
  • 做网站为什么要服务器网络营销服务
  • 如何在手机做网站学校seo推广培训班
  • 企业手机端网站模板下载如何进行网络营销策划
  • 做彩票网站技术网络项目怎么推广
  • php创建站点seo顾问是什么职业
  • 网站建设简介电话百度之家
  • 佛山正规网站建设报价企业网站有什么
  • 济南网站建设运营做高端网站公司
  • 做擦边球网站赚钱么沈阳seo收费
  • 营商环境建设监督局网站网络推广的平台
  • 做qq代刷网站域名归属查询
  • 用dw做网站背景网销是什么工作好做吗
  • 石家庄做网站的公司申京效率值联盟第一
  • 长葛网站建设seo外包多少钱
  • 如何查网站是哪个公司做的国外服务器免费ip地址
  • 手机制作网站免费网站怎么seo关键词排名优化推广
  • 互联网网站类型seo是什么意思
  • 东莞做网站网站杭州优化公司多少钱
  • 响应式网站建设费用佳木斯seo
  • 深圳网博网站建设必应站长平台
  • 昆山疫情最新消息今天实时网站优化排名查询
  • 做动漫头像的网站青岛seo经理
  • 网络营销导向的企业网站建设的要求免费产品推广网站
  • html静态网站开发自我介绍北京网络营销公司
  • 办公宽带多少钱一年谷歌seo技巧
  • 百度wap网站建设新闻软文范例大全
  • 主题id或类的名称wordpress北京seo招聘