我的github
posts - 3243,  comments - 42,  views - 158万

‌Shader中的uniform和attribute的主要区别在于它们的使用范围和用途。‌

uniform变量

‌uniform变量‌可以在顶点着色器(Vertex Shader)和片段着色器(Fragment Shader)中共享使用,通常用于传递全局数据,如变换矩阵、光照参数、材质属性等。这些数据在着色器程序中是不可变的,即它们的值不能在着色器内部被修改。例如:

  • uniform mat4 viewProjMatrix; 表示投影和视图矩阵
  • uniform vec3 lightPosition; 表示光源位置

attribute变量

‌attribute变量‌只能在顶点着色器中使用,用于传递顶点数据,如顶点坐标、法线、纹理坐标、顶点颜色等。这些数据是顶点着色器处理的基础,不能在片段着色器中使用。例如:

  • attribute vec4 a_position; 表示顶点位置
  • attribute vec2 a_texCoord0; 表示纹理坐标UV

具体应用场景

  • ‌uniform变量‌常用于传递那些在整个渲染过程中不会改变的数据,如变换矩阵、光照参数等,这些数据在整个渲染过程中保持不变。
  • ‌attribute变量‌则用于传递每个顶点的具体数据,如位置、颜色、纹理坐标等,这些数据是动态的,每个顶点可能有所不同。

通过这些区别,可以更好地理解uniform和attribute在shader编程中的作用和用法。

参考:百度AI

posted on   XiaoNiuFeiTian  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2022-12-13 arcgis相交和spatial join的区别
2021-12-13 Cesium倾斜摄影模型单体化
2021-12-13 cesium地下模式(地表透明)
2021-12-13 Cesium之挖方分析
2021-12-13 Vue中怎么使用Less
2021-12-13 Cesium之3dtiles事件
2021-12-13 Cesium之Cesium3DTileStyle
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示