shader之间传递值用的变量类型

shader的使用流程:
1. 编写vertex shader和fragment shader源码。
2. 创建两个shader 实例:gluint glcreateshader(glenum type); [gl.createshader]
3. 给shader实例指定源码。 glshadersource [gl.shadersource]
4. 编译shaer源码 void glcompileshader(gluint shader) [gl.compileshader]
5. 创建shader program -- gluint glcreateprogram(void) [gl.createprogram]
6. 绑定shader到program 。 void glattachshader(gluint program, gluint shader)。每个program必须绑定一个vertex shader 和一个fragment shader。 [gl.attachshader]
7. 链接program 。 void gllinkprogram(gluint program) [gl.linkprogram]
8. 使用porgram 。 void gluseprogram(gluint program) [gl.useprogram]
attribute变量
attribute是顶点属性,每个顶点都会有,但只存在于vertex shader中,由应用程序传入其值。
因为在链接program之前,attribute变量是还没有分配内存的,为了给shader中的attribute变量传值,首先需要将其绑定到program上,并指定他的位置attr_pos,链接program之后,可以通过这个位置attr_pos来给这个变量传值。加入shader中有一个
这样就将attr_name(字符串)绑定到了attr_pos(无符号值)位置。
这样就把vert_data传递给了attribute变量attr_name。
因为每个顶点属性的数据都依托在一个vbo中了,因此要想给一个attrbute变量传递数据,需要先把把数据交给一个vbo对象。
如果我们再链接program之前并没有指定他的位置,我们还可以去查找这个变量。
uniform变量
uniform变量在shader中时只读,随不同图元变化的全局变量,其值也由应用程序传入。
这样就可以给unif_pos设置1个浮点数的值,除gluniform1f之外,还可以使用如下方法:
可以看到,根据参数个数和类型不同,需要使用不同的方法设置。
varying变量
shader之间传递值用的变量类型了。在编写vertex shader 中写入,在fragment shader中只读出

布局MCU,“国民芯”版图新格局
linux系统中驱动软件架构设计
Arduino库可以直接在RT-Thread上运行了 附详细解读
高性能低功耗I2C接口智能门锁触摸芯片GTX314L
中控智慧科技考勤机IM2500简介
shader之间传递值用的变量类型
如何用好笔记本的锂电池
IMASSA3智净扫地机评测 为家庭洁净带来不一样的体验
人工智能的未来在哪里
消防报警系统的防雷防浪涌解析
Toshiba推出小巧轻薄型共漏极MOSFET,具有极低导通电阻,适合快速充电设备
SJA1000控制器在多电机综合保护器中的应用
大模型如何快速构建指令遵循数据集?
一台5G基站到底要多少钱呢?商用阶段单站为50万-60万元
NI携其最新产品亮相首届电子设计创新会议
导热吸波材料的交流探讨应用研究
ch334u数据手册
医疗健康软硬件需求激增,OEM厂商商机无限
小米6最新消息:小米6真机曝光,无断点设计是什么鬼?
钽电解电容器