OpenGL - 使用无绑定纹理时,sampler2D 禁用 TextureCubeMapSeamless。

3
我正在我的渲染器中使用Cubemaps,并启用TextureCubeMapSeamless以在6张图像之间进行过滤。目前运行良好。我正在尝试使用ARB_bindless_texture对sampler2D进行实验。我的问题是,一旦我使用了这个扩展,可能是在其中声明了一个带有sampler2D[]的UBO或者对sampler2D进行了显式转换,TextureCubeMapSeamless就会被禁用,并且在Cubemap图像之间会出现可见的线条。现在,bindless纹理本身的工作方式与预期完全相同。我可以从sampler2D中读取,并且输出与“正常”纹理相同。
我的问题是:如何同时使用ARB_bindless_texture和TextureCubeMapSeamless上的sampler2D? 这是驱动程序错误吗?它们对我来说似乎有些不相关。

1
你的问题毫无意义。无缝立方体贴图适用于立方体贴图,而不是sampler2D;立方体贴图来自samplerCube - Nicol Bolas
我知道无缝立方体贴图只适用于立方贴图,这是显然的。但是,一旦我开始使用sampler2D(而不是samplerCube)作为无绑定纹理,它就会被禁用。 我可以从两个纹理sampler2D(无绑定)和samplerCube(统一)中进行采样。但由于无缝立方体贴图被禁用,因此在我的立方体贴图图像之间出现了这些未经过滤的线条。 - BoyBaykiller
如果您正在使用无绑定纹理来处理2D纹理,为什么不也用于立方体贴图呢? - Nicol Bolas
因为在 ARB_bindless_texture 的文档中提到: 使用纹理句柄访问立方体贴图时,无缝立方体贴图启用被忽略并视为禁用。 我还是尝试了一下,结果如预期。但主要问题是,为什么当我不是通过纹理句柄而是简单的 uniform 访问立方体贴图时,它会被禁用? - BoyBaykiller
1个回答

2
据我所知,这不是预期的行为,但需要使用无绑定的人较少会根据无缝立方体贴图有条件地使用无绑定而不是基于常规uniform。所以这可能是为什么出现了bug的原因;没人注意到它。
话虽如此,我建议切换到ARB/AMD_seamless_cubemap_per_texture。这个无缝立方体贴图字段是受到无绑定纹理支持的。ARB版本已经被广泛实现,特别是在您使用无绑定时。链接:pretty widely implemented

好的,我不太确定如何使用这些扩展程序,但我想我会弄清楚的。谢谢。 - BoyBaykiller
@JulianStambuk:你成功地使用了无绑定纹理。我认为你可以处理glTexture/SamplerParameter中的一个新枚举器。 - Nicol Bolas
竟然可以这样做: GL.TexParameter(TextureTarget, (TextureParameterName)All.TextureCubeMapSeamless, 1); - BoyBaykiller
@JulianStambuk:哦,没错,你在使用C#。这确实使事情变得有点复杂,但是是的,那应该可以工作。 - Nicol Bolas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接