Dan*_*sky 7 opengl opengl-es glsl mipmaps
我正在使用OpenGL ES(通过WebGL),但我认为这个问题也适用于完整的OpenGL配置文件.
假设我创建了一个具有完整mipmap级别的OpenGL纹理,并将其TEXTURE_MIN_FILTER设置为NEAREST_MIPMAP_NEAREST.还假设我有一个片段着色器来对此纹理进行采样.根据纹理的缩小程度选择mipmap级别,但是如何选择缩小程度?
在我的例子中,我正在合成(在着色器内)我用来对纹理进行采样的纹理坐标.实际上,我的纹理坐标不是基于任何传入的变化.即使我在这个纹理上启用了mipmapping,它似乎也没有任何效果.这是预期的吗?我是否需要自己计算LOD并将bias参数用于texture2D?(没有texture2DLOD,因为我正在使用ES)
并行计算相邻像素的块.(例如,IIRC,PowerVR芯片一次执行4x4块.)当您在片段着色器中调用texture2D时,采样器同时为所有16个像素提取所有16个样本,因此具有计算缩小所需的邻接信息水平.这是为什么相邻像素从纹理的附近区域采样非常重要的部分原因.
请注意,这仅适用于片段着色器.在顶点着色器中,始终使用第一个mipmap级别(除非使用了Texture2D的Lod版本.)