OpenGL ES2.0的一些总结

本文总结了OpenGL ES2.0的核心概念,包括Shader语言限制、矩阵与向量描述、Uniform与Varying变量、精度限定符、不变性特性、顶点属性与缓冲对象、坐标变换、裁剪与视口转换、VS和FS的功能、纹理操作以及FBO的作用。通过这些内容,读者可以深入理解OpenGL ES2.0的工作原理和最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Shader language:
访问vector某个分量,必须用常量,不能用一个表达式。
Matrix 和Vector都是用列来描述。
访问array某个下标,只能用常数。不能再定义的时候初始化,不能定义为常量数组,必须一个个数组元素的初始化。
函数不能迭代。有些GPU没有stack和flow的control,shader函数是inline。
Uniform是从api层传下来的只读的变量。
Uniform存在constant buf中,varying存在interpolators中。需要packing。规则是让产生代码的复杂度保持常量。即不需要进行重排使得编译器产生额外的代码来融合unpack 的data。
Precision qualifier:只有es才有,desktop没有。保持速度和电量。VS默认为high精度,PS必须要指定精度。
Invariance: es引入。因为compiler会优化shader导致指令重排。指令重排的结果就是相同的输入不一定有相同的结果。Case:multipass shader effect.将一个物体使用alpha blending画在他自己的上面。通常叫做Z fighting。Z精度的不同导致结果不一样。比如先一个vs+fs(fs处理光照)再一个相同vs+fs(fs处理环境光和散射光)结果会不同。使用invarient可以保证相同的操作得出相同的结果。

Vertex attributes, arrays and buffer object
设置const attribute只能用float型,因为const attribute用的少,而且内部基本都要转化成为single-presicion float point
在vs里面声明vertex attribute: attribute不会像uniform和varying一样被pack。每个通道都被存储为32bit single precision floating point. 声明为attribut的在vs里面是作为只读的。

PA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值