纹理对象状态

今天写OpenGL的渲染器,封装和缓存 纹理状态切换的时候,记得不太清楚了。仔细再阅读了一下红宝书,把心得记录下来。如果有错误,欢迎指正

 1、 当调用glbindtexture()的时候,会切换到另一个纹理对象。这个纹理对象中包含了: 图像、宽、高、边框、框高和纹理属性。纹理属性包括过滤器、环绕模式,边框颜色和纹理优先级。

      也就是说,当调用glbindtexture()的时候, 滤波、环绕这些状态是发生变化了的。 这些仅仅和图像相关的状态属性是伴随纹理对象的,而不是伴随纹理单元的。

2、 texenv、texgen等则是伴随纹理单元的。 


个人感觉:

     纹理对象切换会导致 过滤、特别是环绕的切换, 其实和现在引擎的需求略微有一些区别。为了节约资源,图像数据会共享;为了避免频繁的数据传输,肯定也会使用纹理对象;但是环绕、过滤一般是作为引擎材质设计的一部分。一副图像可能会在不同材质中被引用多次, 有不同的环绕、滤波模式。 

    当然,这也不是什么大问题,或者每次bind之后,都gltexparamter;  或者 在 引擎的Texture对象上,再cache一份上一次应用的纹理属性,来减少对纹理属性修改的API调用。只是看起来,会显得比较绕

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值