我试图用预先计算的速度矢量场做一些GLSL粒子。这些矢量场存储为~13 1024x170浮点纹理,每个纹理对应一个不同的"切片"在z平面上。理想情况下,我想将这些加载为尺寸为1024x170x13的3D纹理,以允许在我的着色器中自动插值,但我的本地实现提供了256的GL_MAX_3D_TEXTURE_SIZE,这意味着(如果我理解正确的话)我的最大尺寸为每个维度为256,因此无法工作。
因此,我的下一步是尝试使用GL_TEXTURE_2D_ARRAY,并在着色器中的平面之间进行插值。不幸的是,pyglet似乎没有公开这个功能(??):
Traceback (most recent call last):
File "particle_trace.py", line 67, in <module>
load_vectortex3d(f, tex)
File "particle_trace.py", line 56, in load_vectortex3d
glBindTexture(GL_TEXTURE_2D_ARRAY, tex)
NameError: global name 'GL_TEXTURE_2D_ARRAY' is not defined
我的下一步是分别绑定所有纹理,将它们全部独立地传递给着色器,然后在那里进行计算。但是......我在这里咆哮错误的树吗?当然必须有更好的方法来做到这一点。