ブログランキング・にほんブログ村へ


iPhone/iPad用潜水艦ゲームアプリ ソナーエコー iTunesにて公開中

2015年08月08日

[iOS] ERROR: Implementation limit of 32 varying components exceeded. Unable to allocate '変数名'

OpenGL のシェーダにコンパイルで
ERROR: Implementation limit of 32 varying components exceeded. Unable to allocate '変数名'
というエラーがでた。

vertexシェーダからflagmentシェーダに渡すvarying変数の数に上限があったとは知らなかった。

ちなみにあんまり考えないでMatrixなんかをvaryingで出してると行列の項目数分出てしまうらしくあっという間に使いきってしまうっぽい。
間を滑らかに繋いでくれる変数なので確かにそんなに気軽に使えるのはおかしいなとは思ってた。
行列の各項目値を滑らかに繋いでその結果を有意義に使う‥そりゃ確かにないかもしれん。
ほとんどcのexternal変数みたいな感覚で使ってたんで反省。
attributeの値に寄らずuniformの値で一意に決まる値などcpuでやっても足ひっぱらないと思うものはできるだけcpuでやってuniformで直接flagmentシェーダに渡すべき、ということなんだろう。

そりゃそうだ。
タグ:iOS OpenGL
posted by みこあいさ at 11:06| iOS開発