gles小注意

47 篇文章 2 订阅

8.尽量使用VBO。

glVertexAttribPointer***传输的数据不是VBO指针的话,那传输的数据越多,耗时越多;除了耗时,这个函数每次调用还会把CPU的数据拷贝一份到GPU,消耗带宽,使用VBO的话可以直接将这份数据cache到GPU,下次就不用再次拷贝了,从而节约了带宽,也就节省了用电。

 

7.glClear(...)也是会耗时2ms~9ms左右的。

所以在效果不影响的情况下,能不clear就不clear。

 

6.尽量少切换FBO

因为切换FBO也是耗时的(大约5~6ms,不同机器不同时间),能在同一个FBO上处理的尽量在同一个上处理。

 

5.片元着色器的输入在图元之间是进行线性插值的。

 

4.glsl中 函数不能被递归调用。

 

3. glsl中,在声明时,属性变量、一致变量、易变变量 都是不能被初始化的。

属性变量、一致变量只能是从程序端赋值过来,而不能在glsl中更改或赋值。

 

2.一张图片占用内存计算:

图像占用内存的公式是:numBytes = width * height * bitsPerPixel / 8

例如,一张1024*1024的RGBA_8888的位图所占用的内存: 1024*1024*(4*8)/8=4M

 

1.GLES20.glGetAttribLocation(mProgramID, propertyName)和GLES20.glGetUniformLocation(mProgramID, propertyName)可能返回-1的情形:

1.1 propertyName在顶点着色器或者片元着色器中没有声明的;

1.2 propertyName在着色器文本中声明了的,但是没有使用到,也会返回-1;(就算使用到了,但是没有实际的应用也没用,例如 vec3 test= aInVec3;aInVec3是声明了的并且可以从外面传值进来的,但是如果我们没有使用到test,那么aInVec3得到的location还是-1)

1.3 propertyName以gl专用的前缀“gl_”开头。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值