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

重庆市建设厅网站首页前端开发培训找不到工作

重庆市建设厅网站首页,前端开发培训找不到工作,湖南网站建设推广优化,wordpress后台卡顿在OpenGL ES中,将值传入Shader的方式主要有以下几种: 1. Uniform变量 用途:用于传递在绘制过程中不变的常量数据,如变换矩阵、颜色等。步骤: 在Shader中声明Uniform变量:uniform mat4 uMVPMatrix; // 例如…

在OpenGL ES中,将值传入Shader的方式主要有以下几种:

1. Uniform变量

  • 用途:用于传递在绘制过程中不变的常量数据,如变换矩阵、颜色等。
  • 步骤
    1. 在Shader中声明Uniform变量:
      uniform mat4 uMVPMatrix; // 例如一个模型视图投影矩阵
      uniform vec4 uColor;     // 例如一个颜色值
      
    2. 在C/C++代码中获取Uniform变量的位置:
      GLint uMVPMatrixLocation = glGetUniformLocation(program, "uMVPMatrix");
      GLint uColorLocation = glGetUniformLocation(program, "uColor");
      
    3. 使用glUniform*系列函数将数据传入Shader:
      glUniformMatrix4fv(uMVPMatrixLocation, 1, GL_FALSE, mvpMatrix);
      glUniform4f(uColorLocation, r, g, b, a);
      

2. Attribute变量

  • 用途:用于传递每个顶点不同的数据,如顶点位置、法线、纹理坐标等。
  • 步骤
    1. 在Shader中声明Attribute变量:
      attribute vec4 aPosition;  // 顶点位置
      attribute vec2 aTexCoord; // 纹理坐标
      
    2. 在C/C++代码中获取Attribute变量的位置:
      GLint aPositionLocation = glGetAttribLocation(program, "aPosition");
      GLint aTexCoordLocation = glGetAttribLocation(program, "aTexCoord");
      
    3. 使用glVertexAttribPointer指定数据格式和位置:
      glVertexAttribPointer(aPositionLocation, 3, GL_FLOAT, GL_FALSE, stride, vertexData);
      glVertexAttribPointer(aTexCoordLocation, 2, GL_FLOAT, GL_FALSE, stride, texCoordData);
      
    4. 启用Attribute变量:
      glEnableVertexAttribArray(aPositionLocation);
      glEnableVertexAttribArray(aTexCoordLocation);
      

3. Texture(纹理)

  • 用途:用于传递纹理数据,通常用于贴图。
  • 步骤
    1. 在Shader中声明Sampler变量:
      uniform sampler2D uTexture; // 2D纹理
      
    2. 在C/C++代码中绑定纹理并传入Shader:
      glActiveTexture(GL_TEXTURE0); // 激活纹理单元0
      glBindTexture(GL_TEXTURE_2D, textureId); // 绑定纹理
      GLint uTextureLocation = glGetUniformLocation(program, "uTexture");
      glUniform1i(uTextureLocation, 0); // 将纹理单元0传入Shader
      

4. Varying变量

  • 用途:用于在Vertex Shader和Fragment Shader之间传递插值数据,如颜色、纹理坐标等。
  • 步骤
    1. 在Vertex Shader中声明Varying变量并赋值:
      varying vec2 vTexCoord;
      void main() {vTexCoord = aTexCoord; // 从Attribute变量传入gl_Position = uMVPMatrix * aPosition;
      }
      
    2. 在Fragment Shader中声明相同的Varying变量并使用:
      varying vec2 vTexCoord;
      void main() {gl_FragColor = texture2D(uTexture, vTexCoord); // 使用插值后的纹理坐标
      }
      

5. Shader Storage Buffer Object (SSBO)

  • 用途:用于传递大量数据,通常用于计算Shader或复杂的数据结构。
  • 步骤
    1. 在Shader中声明SSBO:
      layout(std430, binding = 0) buffer MyBuffer {vec4 data[];
      };
      
    2. 在C/C++代码中创建并绑定SSBO:
      GLuint ssbo;
      glGenBuffers(1, &ssbo);
      glBindBuffer(GL_SHADER_STORAGE_BUFFER, ssbo);
      glBufferData(GL_SHADER_STORAGE_BUFFER, size, data, GL_DYNAMIC_DRAW);
      glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, ssbo);
      

6. Uniform Buffer Object (UBO)

  • 用途:用于在多个Shader之间共享Uniform数据。
  • 步骤
    1. 在Shader中声明UBO:
      layout(std140) uniform MyUBO {mat4 uMVPMatrix;vec4 uColor;
      };
      
    2. 在C/C++代码中创建并绑定UBO:
      GLuint ubo;
      glGenBuffers(1, &ubo);
      glBindBuffer(GL_UNIFORM_BUFFER, ubo);
      glBufferData(GL_UNIFORM_BUFFER, size, data, GL_STATIC_DRAW);
      glBindBufferBase(GL_UNIFORM_BUFFER, 0, ubo);
      

总结

  • Uniform:用于传递常量数据。
  • Attribute:用于传递顶点数据。
  • Texture:用于传递纹理数据。
  • Varying:用于在Vertex和Fragment Shader之间传递插值数据。
  • SSBO:用于传递大量数据。
  • UBO:用于在多个Shader之间共享Uniform数据。

根据具体需求选择合适的方式将数据传入Shader。

http://www.dtcms.com/wzjs/576057.html

相关文章:

  • 漳州网站建设企业手机端尺寸
  • 淘客类网站如何做排名淄博网站建设 招聘
  • 如何建设网站教程视屏长沙谷歌seo收费
  • 网站优化基本技巧自我介绍网站html
  • 网站建设的投资预算怎么写东莞厚街有什么好玩的地方
  • 怎么做虚拟的网站郑州网站建设价位
  • 如何建立学校网站千图网的设计风格
  • 网站精美排版代码wordpress 旅游插件
  • 如何在工商局网站上做网登一人可做的加盟店
  • 国外免费网站域名服务器查询软件网站开发的app
  • 网站的在线支付怎么做官方网站建设建议
  • 网站批量添加内容六年级毕业留言册页面设计模板
  • 网站代运营合同模板设计一站式服务
  • 什么网站做唱歌主播wordpress dooplay
  • 建设公司网站需要多少天大竹县国示建设专题网站
  • 线上网站制作网站开发公司 杭州
  • 罗湖网站建设宁波网站建设定制开发
  • 广州做响应式网站阳江房产网
  • 石家庄做网站的公司旅游app推广营销策略
  • 建设公司企业网站领优惠卷的网站怎么做
  • 长沙哪里有网站制作会网站开发想找兼职
  • 网站被黑 禁止js跳转湖南长沙理工大学
  • 家里做网站买什么服务器好wordpress那个版本
  • 有教做点心的网站吗田贝网站建设
  • 云服务器搭建个人网站wordpress v5.0
  • 网站备案 暂住证公司网页制作模板图片
  • 泉州大型网站设计公司有强大seo功能的wordpress模板
  • 比较有设计感的网站佛山 做网站公司
  • 网站建设中忽略的字体违法行为网站设计排名网站
  • vs中做网站设置背景图片怎么把网站制作成安卓