OpenGL - GLSL 120中的Sampler2D数组?

时间:2017-02-25 23:17:15

标签: arrays macos opengl

我正在开发游戏引擎,我需要在片段着色器中安装一个Sampler2D数组来支持多个纹理。在GLSL 130及以上版本中,它看起来像这样:

uniform sampler2D textures[32];

可悲的是,我的显卡只是OpenGL 2.1的默认Intel,所以它不支持Sampler2D阵列。如果可能的话,如何在不为每个纹理创建32个制服的情况下实现这一目标?

感谢。

1 个答案:

答案 0 :(得分:2)

无论你做什么,都无法实现。您的“默认Intel with OpenGL 2.1”不允许您在一个着色器阶段访问32个纹理。期。您只能在支持OpenGL 4.x的更新近的硬件上实现这一点。所以即使在GLSL 1.30上,也可能会失败。

您可以期待的最好的是对EXT_texture_array的支持,这将允许您拥有sampler2DArray类型。这将允许您创建可以具有多个阵列层的GL_TEXTURE_2D_ARRAY_EXT纹理类型。您可以访问纹理的各个图层而无需任何交叉。

此外,根据您正在做的事情,纹理地图集可能是可能的。