いつのまにか、OpenGLのテクスチャ挙動もDirectXに合わせる方向になっているようだ。OpenGL 3.0では、glTexParameteriで GL_TEXTURE_BORDER_COLOR を設定することが非推奨となっている。
他にも テクスチャラッピングモードで GL_CLAMP_TO_BORDER を指定することは推奨されていないとなっている。
さらにglTexImage2Dでボーダー指定で 0 を設定することを要求しているようです。
他にも テクスチャラッピングモードで GL_CLAMP_TO_BORDER を指定することは推奨されていないとなっている。
さらにglTexImage2Dでボーダー指定で 0 を設定することを要求しているようです。
従来のボーダーの処理に関して、実はドライバ内部のソフトウェア処理にて実現し、
ハードウェアとしてはサポートしていない!ということになっているのでは?と疑いを持ったのですが、
そういうわけではないようです。
DirectX10のAPIを調べてみると、ボーダーの色設定はできるのでボーダー自身のサポートがなくなるわけではないようです。
では、OpenGLではどうなるのか調べてみたところ、サンプラーオブジェクトなるものが存在していました。
そのエクステンションの名前は、”GL_ARB_sampler_objects”。
ただし、OpenGL 3.3での拡張となるようです。
サンプラオブジェクトを作成し、テクスチャのバインド前にセットすることで、
拡大縮小フィルタ設定、テクスチャラッピングモード、ボーダーカラーの設定らが可能になるとのこと。
まさにこの挙動はDirectX10のサンプラーオブジェクトと同じだといえます。
残念ながら手元のRADEON環境ではOpenGL3.3対応していないのか、
GL_ARB_sampler_objects の文字列が見当たらなかったので試せていません。
Catalystの更新((10.5で含まれるらしい。また以前のtransform_feedback2,3もここで入るらしい)でサポートされるとのことなので、そのうち試してみようと思ってはいます。