Re: WebGLのシェーダーでテクスチャ -
sio29 2012/09/26(Wed) 02:14
No.7733
ソースはちょっと…
方法としては描画前(drawArraysやdrawElementsの前に)に、そのマテリアルで使うテクスチャを設定してあげるだけだと思います。
activeTextureでテクスチャを有効にしてあげて、
bindTextureでテクスチャを関連付けしてあげるだけかと。
そのときShaderへどのテクスチャを使うかをuniform命令で教えてあげるだけです。
ただし前提としてポリゴン(頂点リスト)は予めマテリアルごとに分割しているものとします。
WebGLはOpenGL ES2.0の薄いラッパーなのでOpenGLのサンプルプログラムはほぼそのまま使えますので、
OpenGL ES2.0のプログラムを検索してみてはどうでしょうか?
Re: WebGLのシェーダーでテクスチャ -
sio29 2012/09/26(Wed) 02:29
No.7734
mqoviewerで言えばmqogl.jsがWebGLへのアクセスする関数をまとめたソースになります。
その中でテクスチャを切り替えるのはSetxxxTextureです。
ディフューズテクスチャならばSetDifTextureになります。
ソースの中ではprogram.dif_samplerがディフューズテクスチャが使用するテクスチャサンプラになります。
その値をGLSL側(mqoshader.flag)でDif_uSamplerがうけとります。
基本的に特別なことは何もしてません。
描画前にテクスチャを切り替える。これだけです。
Re: WebGLのシェーダーでテクスチャ -
たけし 2012/09/26(Wed) 15:29
No.7735
sio29さん、ありがとうございます。
ポリゴン(頂点リスト)を予めマテリアルごとに分割すればよかったんですね。
そこに気づきませんでした。