我有两个2D纹理。第一个是MSAA纹理,使用GL_TEXTURE_2D_MULTISAMPLE
的目标。第二个非MSAA纹理使用GL_TEXTURE_2D
的目标。线性过滤可以用于MSAA纹理到非MSAA纹理的FBO blit?
根据OpenGL的spec on ARB_texture_multisample,当绘制MSAA纹理时,只有GL_NEAREST
是有效的过滤选项。
在这种情况下,这两种纹理的通过它们的单独的帧缓冲器的对象附加到GL_COLOR_ATTACHMENT0
。他们的决议也是相同的大小(据我所知,这是必要的,当一个MSAA非MSAA)。因此,考虑到目前的限制,如果我将MSAA持有的FBO闪烁到非MSAA持有的FBO,是否仍然需要使用GL_NEAREST
作为过滤选项,或者是GL_LINEAR
有效,因为两个纹理都已经呈现至?
我认为,因为你可以采样多重采样纹理的唯一方法是使用'texelFetch(...)',这或多或少地暗示大多数采样器状态是无意义的(例如,换行模式,滤波器,LOD偏差)。就像你说的那样,根据规范,这不是一个错误。设置这些状态,但是如果您必须使用过滤器来描述行为,那么点/最近将是唯一的候选者。 –
@ AndonM.Coleman是的,我认为这正是第一个规范引用描述的内容,其中我突出显示了“不执行过滤”。 –
是的,我只是想指出你可以设置这些采样器状态,他们只是不做任何事情:p Sampler对象将这些状态从纹理对象状态中分离出来,并且很可能会使这个问题不成问题。但由于GL的传统设计,多重采样纹理对象具有与它们相关的采样器状态,因此它们不会执行任何操作(因为它们未被采样)。 –