我要在顶点着色器中访问的数据量很大(太大,无法容纳UBO)。
在OpenGL 4.3中,我只使用SSBO并完成它,但是现在我还必须支持3.2或3.3版以下的人员。我研究了如何访问顶点着色器中的缓冲区,并且从我可以收集的内容来看,似乎我可以使用TBO(或实际上是任何缓冲区),而不必进行诸如管理UBO之类的更多工作。然后,我将对texelFetch()
使用一些技巧,以获取我的数据。
但是this site声称
GLSL还支持在顶点和片段着色器中访问纹理贴图。实现可以选择在顶点着色器中支持纹理映射(前提是基础OpenGL实现支持此功能)
现在,如果我勾选GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS
并且它为零,那我就敬酒了。还是在给定3.2-3.3 GL版本而又不弄乱texelFetch()
的情况下,我还有另一种更合理的方式来获取比UBO在顶点着色器中支持的数据量更多的数据吗?