OpenGL和GLSL中的glTexParameter和过滤?
Posted
技术标签:
【中文标题】OpenGL和GLSL中的glTexParameter和过滤?【英文标题】:glTexParameter and filtering in OpenGL and GLSL? 【发布时间】:2011-01-12 05:25:30 【问题描述】:我有几个关于 glTexParameter 和过滤的问题
1) 应用 glTexParameter(特别是过滤)时的范围是什么?这是一个场景:
绑定纹理。将过滤器设置为线性 将纹理设置为着色器的“Sampler1” 绑定另一个纹理。将其过滤器设置为 NEAREST 将该纹理设置为着色器的“Sampler2” 画当我在着色器中使用纹理时,一个是线性的,另一个是最近的吗?还是它们都最近,因为它是最后调用的?
2) 可以在GLSL中设置过滤方式吗?
【问题讨论】:
【参考方案1】:1) 过滤模式是纹理对象的一个参数,即过滤模式只适用于设置过滤模式时已经激活的纹理对象。
2) 过滤模式是采样器的一个参数,在整个着色器执行期间必须保持不变。因此,它不能从着色器中更改。但是,可以在不应用任何过滤的情况下处理单个纹理级别和样本,这可用于实现自定义过滤方法(尽管这些方法的性能会低得多)。
【讨论】:
【参考方案2】:同样的事情也困扰着我,但是当我看到你的帖子时,我想出了一个解决方案,即在同一个着色器中同时使用最接近和线性。
首先,将纹理设置为线性。当您需要最近的时,您只需将 uv 位置夹在像素网格的中心即可。我希望,根据线性插值的行为,结果将是最接近的。
【讨论】:
以上是关于OpenGL和GLSL中的glTexParameter和过滤?的主要内容,如果未能解决你的问题,请参考以下文章
OPENGL ES 2.0 知识串讲 ——GLSL 语法(IV)
OPENGL ES 2.0 知识串讲 ——GLSL 语法(IV)
我的OpenGL学习进阶之旅如何抽取着色器代码到assets目录下的GLSL文件,以及如何通过Java或者C++代码来加载着GLSL文件?