当前位置: 首页 > 知识库问答 >
问题:

openGL:选择一个纹理单元而不是另一个纹理单元的标准

吴城
2023-03-14

我总是只画一个纹理,选择0纹理单位

glActiveTexture(GL_TEXTURE0);

选择其他纹理单元的标准是什么?

我的意思是:如果我必须处理多个纹理,我应该选择哪个单元?我是openGL的初学者,我想知道我是否可以使用相同的0纹理单元来制作所有的图形纹理。有多少个纹理单元?如果有N个纹理单元,我最多可以使用N个纹理吗?

共有1个答案

陈博容
2023-03-14

“纹理单元的数量取决于实现,但必须至少为两个。”

参见:glActiveTexture文档

在glActiveTexture()调用后,您可以使用glBindTexture()绑定纹理。您可以将多个纹理绑定到同一个单元。但只采样其中一个。

请参见:纹理绑定

因此,如果你有N个纹理单元,你最多可以在一个着色器中采样N个纹理。

 类似资料:
  • “我在我的申请中发现了一个奇怪的行为,希望你能解释给我听。”。你看,我有两个3D纹理,它们被发送到片段着色器,渲染得非常好。但有一个问题,当我创建另一个纹理(它是1D纹理)时,一个黑屏正在被渲染,而不是正确的前一个结果。 关于这个1D纹理,我甚至没有将其发送到片段着色器。当我调用glTexImage1D(…)时,黑屏就出现了。我评论这句话,它就消失了!!这两种纹理被渲染。 我觉得纹理单位肯定有问题

  • 使用OpenGL(核心配置文件,4.4),将同一个采样器对象同时绑定到2个不同的纹理单元是否“合法”? 我的测试表明它是有效的,但我不知道我的司机是否原谅了我,或者这是一项功能。

  • 最近我发现了一个OpenGL示例,它应用纹理而没有指定纹理图像单元并且没有将相应的单元整数均匀发送到着色器中,是否可以在不使用纹理单元的情况下应用纹理??或者它只是为活动纹理单元及其着色器采样器值使用默认值。 我的代码块(纹理相关): 我的片段着色器:

  • 我需要在着色器中使用两个纹理,一个在顶点着色器中,另一个在片段着色器中。在这两种情况下,它们都在着色器中引用,例如

  • 我正在尝试使用“gl BlitFrameBuffer”将一个纹理复制到另一个纹理中,我正在处理来自android NDK-Samples的经典开放式gl示例hello-gl2。我改变了着色器,以支持纹理,我可以正确地渲染一个纹理三角形。我还更改了在Java端请求的opengl es版本,以便请求opengl-es3,并且我更新了Cmakelists文件以链接正确的库。调用后,我得到了blitTex

  • OpenGL标准是否要求应该给一个程序没有绑定到纹理单元的统一采样器2D给出一个texture 2d操作的结果? 例如在像素着色器中: 在该计划中: 对于上下文,我想知道是否可以对纹理实体和非纹理实体使用相同的着色器,其中(希望如此),我只需要确保没有任何东西绑定到GL_TEXTURE_2D,以便texture2d()返回0,0,0,1。否则,我需要为每个置换使用一个着色器。