小编Mat*_*son的帖子

OpenGL ES 2.0 texture2D偏移/偏移

我正在使用OpenGL ES 2.0 GLSL功能来处理图像。我要实现的是从片段着色器中的纹理中获取样本时选择特定的细节级别(LOD)。显然texture2DLod(),OpenGL ES 2.0中的片段着色器不支持此功能(但GL_EXT_shader_texture_lod可以选择提供扩展名。)

但是,默认texture2D()功能提供了第三个可选参数偏差。据我了解,该参数应该是添加到当前LOD的偏移量。

在测试中,我绘制的是屏幕大小的四分之一,并且通过缩放样本坐标来放大纹理。我已使用GL_LINEAR_MIPMAP_LINEAR作为缩小过滤器为纹理启用了mipmapping。下图显示了在ARM Mali-400 GPU上使用非零偏差参数进行采样时的结果。

根据ISTM,某些像素使用缩小滤镜,而其他像素则使用放大滤镜。

如何控制?以及在使用偏置时如何确定初始LOD?可以从顶点着色器进行调整吗?

一个相关的问题是以下问题:

GLSL采样器如何确定纹理的缩小程度,从而确定纹理的mipmap级别?

ARM Mali-400上具有bias参数的texture2D

更新:我注意到,如果我对纹理进行采样以使其覆盖屏幕,那么它似乎可以进行正确的mipmap查找(即使已放大)。现在,如果我向采样坐标添加一个小的偏移量,则我将开始看到在上图中看到的条带(甚至进一步放大了)。如果不使用bias参数,则根本看不到任何条带。

android mipmaps level-of-detail fragment-shader opengl-es-2.0

5
推荐指数
0
解决办法
4505
查看次数