访问顶点着色器中的缓冲区(不使用SSBO)

时间:2019-02-17 01:57:35

标签: opengl glsl shader

我要在顶点着色器中访问的数据量很大(太大,无法容纳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在顶点着色器中支持的数据量更多的数据吗?

1 个答案:

答案 0 :(得分:0)

如果OpenGL版本的高度不足以支持SSBO,则可以使用Texture Buffer Objects完成。