Closed karoterra closed 1 month ago
ソースコードを変更したり戻したりと試していたら、元のコードでも意図した挙動をしてしまった。
data, w, h = obj.getpixeldata()
で画像データが出力されるdata
配列は毎回同じ配列が使いまわされているので、glTextureSubImage2D
でGPUに画像をテクスチャとして転送する際、タイミングの問題で転送完了前に data
を更新してしまっていたのかも?
再現が難しくて嫌ですわ。
対策案としては以下の通り。
data
のコピーを作成してからGPUに転送する
glTextureSubImage2D
のあと転送が完了するのをまつ
スクリプトの方では以下の様に
フラグメントシェーダーでは以下の様に
してみたところ、
c0
,c1
,c2
いずれもテクスチャ3になってしまった。c0
はテクスチャ1、c1
はテクスチ2、c2
はテクスチャ3になるのが想定の挙動である。