- OpenGLスレ Part20
899 :デフォルトの名無しさん[sage]:2014/08/25(月) 23:05:50.21 ID:Gut43Z9a - uniformというのは、画面に表示するテクスチャすべてに共通する要素(変換行列など)を設定するのに使うものなんでしょうか?
例えば、1枚のテクスチャの全頂点に共通する変数(モザイク処理のフラグなど)は、vboで送った方が効率がいいんでしょうか?
|
- OpenGLスレ Part20
901 :デフォルトの名無しさん[sage]:2014/08/25(月) 23:15:08.86 ID:Gut43Z9a - >>900
テクスチャ1枚の中で頂点ごとに変わらない要素(ambientカラーや、エフェクトのフラグなど)をvboで全頂点同じ値で渡していたのですが、 これをuniformに変えたところ急に動きが遅くなったためです。 vboよりもglUniform計のコマンドの方が遅いということなのかと思いました。 テクスチャごとに異なる値でも、テクスチャ内で共通の値はuniformを使うのが普通で、 何か別のところにミスがあるということでしょうか?
|
- OpenGLスレ Part20
903 :デフォルトの名無しさん[sage]:2014/08/25(月) 23:39:41.59 ID:Gut43Z9a - >>902
ありがとうございます。 //vsh void main() { vtexcoord = texcoord; y = position.y; x = position.x; z = position.z; vcolor = color; eyenormal = normalize(normalMatrix*normal); gl_Position = modelViewProjectionMatrix * position; } //fsh void main() { gl_FragColor = texture2D(s_texture0, vec2(vtexcoord.x, vtexcoord.y ) ) * vcolor; } ちょっといじっている途中なので無駄な変数が残っていたりしますが、この程度です。 (フラグ関係を1つのシェーダで処理せず、エフェクトによって処理を切り替える方式に移行している途中なのでこのシェーダには モザイクなどのフラグは出てきませんが、エフェクトなしで一番使用頻度の高いシェーダです) uniformをfshに直接渡さず、vshに渡してからvaryingでfshに渡さないといけない、とかいうことはありますでしょうか。
|