使用OpenGL(核心配置文件,4.4),将同一个采样器对象同时绑定到2个不同的纹理单元是否“合法”?
我的测试表明它是有效的,但我不知道我的司机是否原谅了我,或者这是一项功能。
是的,这是完全可以接受的,如下所述。
当采样器对象绑定到纹理单元时,其状态将取代绑定到该纹理单元的纹理对象的状态。如果采样器名称零绑定到纹理单元,则当前绑定纹理的采样器状态将变为活动状态。单个采样器对象可以同时绑定到多个纹理单元。
采样器对象绑定通过以下命令生效:
void glbind采样器(胶合单元,胶合采样器)
将
unit
设置为要绑定采样器的纹理单元的从零开始的索引,并将sampler
设置为上次调用glGenSamplers
返回的采样器对象的名称。
如果绑定成功,则不会对绑定的采样器对象的状态进行任何更改,并且之前对单元的任何绑定都会被破坏。
如何为一个纹理阵列创建多个采样器 到目前为止,我一直依赖OpenGL来确定声明的sampler是指我与绑定的纹理数组。 我尝试在片段着色器中指定两个采样器,但片段着色器出现编译错误: 我没想到这会起作用,但是,我不确定片段着色器编译器是否检查采样器是否分配了纹理,所以可能是其他问题。 我尝试生成和绑定采样器对象,但我仍然得到一个片段着色器错误: 我想坚持使用OpenGL的较低版本,有可能吗?非常感
我正在编写一个批处理系统,它跟踪当前绑定的纹理,以避免不必要的调用。我不确定是否需要跟踪特定批次已经使用了哪些纹理,因此如果一个纹理被使用两次,它将被绑定到需要它的第二个采样器的不同TIU。 OpenGL应用程序是否可以在同一着色器阶段内对多个采样器使用相同的纹理图像单元?不同着色器阶段的采样器如何?例如: 片段着色器: 主要节目: 我看不出这不起作用的任何原因,但是如果着色器程序也包括这样的顶点
我试图理解OpenGL 4.5中的纹理、纹理单位和采样器。我在附上一张我想弄明白的照片。我认为在我的例子中,一切都是正确的,但我不太确定右侧带有问号的1D采样器。 因此,我知道OpenGL提供了许多纹理单元/绑定点,可以在其中绑定纹理和采样器,以便它们协同工作。 这些绑定点中的每一个都可以支持每个纹理目标中的一个(在我的例子中,我将目标和绑定到绑定点,另一个绑定点)。 此外,采样器可以以大致相同的
在openGL中,可以将一个纹理绑定到两个(或多个)不同的统一采样器吗?使用两种不同的纹理进行渲染时,如下所示: 着色器: 客户: 但当我尝试将一个纹理对象绑定到两个不同的纹理单元时,似乎第一个绑定的单元保持未绑定状态: 当然,可以为两个采样器设置相同的单位,但有时我还想为不同的纹理使用着色器,而不仅仅是为两个采样器设置相同的纹理对象。 这个解决方案实际上运行得很好,但它不符合我所描述的需求。也可
我对如何将纹理绑定到GLSL中的插槽有点困惑。以下是我的着色器: 当我设置矩阵时,我需要查询统一位置,然后手动设置该位置的值,执行如下操作: 然而,据我所知,我不需要这样做来初始化我的纹理采样器。在设置时,我似乎只需要这样做: 所以,我的问题是,为什么我不需要对纹理进行与矩阵相同的处理?OpenGL运行时如何“知道”我绑定的纹理应该是我定义的采样器?如果我想拥有多种纹理,我该怎么做呢?
我总是只画一个纹理,选择0纹理单位 选择其他纹理单元的标准是什么? 我的意思是:如果我必须处理多个纹理,我应该选择哪个单元?我是openGL的初学者,我想知道我是否可以使用相同的0纹理单元来制作所有的图形纹理。有多少个纹理单元?如果有N个纹理单元,我最多可以使用N个纹理吗?