事前に計算された速度ベクトル フィールドを使用して GLSL パーティクルを実行しようとしています。これらのベクター フィールドは、それぞれが z 平面の異なる「スライス」に対応する ~13 個の 1024x170 float テクスチャとして格納されます。理想的には、これらを寸法 1024x170x13 の 3D テクスチャとしてロードして、シェーダーで自動補間できるようにしたいのですが、ローカル実装では GL_MAX_3D_TEXTURE_SIZE が 256 になります。は 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
次のステップは、すべてのテクスチャを個別にバインドし、それらをすべて個別にシェーダーに渡し、そこで計算を行うことです。しかし... 私はここで間違った木を吠えていますか? 確かにこれを行うためのより良い方法があるはずです。