続 テクスチャとレンダリングコンテキスト
昨日のレンダリングコンテキストの扱いが気になって、もう少し調べてみました。
まず、C/C++以外ではどうかなと思って、JavaのJOGLを調べました。
https://jogl.dev.java.net/
ドキュメントによると、Textureクラスはレンダリングコンテキスト(GLクラス)とは無関係にインスタンス化できるようです。
もしかしてC/C++でもレンダリングコンテキストとテクスチャは無関係かもと思って確認したところ、Windowsでは
- テクスチャの名前(ID)は全てのコンテキストでユニーク
- コンテキストを設定していないと、glGenTextures()/glDeleteTextures()が失敗する
- glDeleteTextures()はglGenTextures()を呼び出したコンテキストと違うコンテキストでも成功する
となりました。
また、Mesaもソースをざっと読む限り同じ動作のようです。
というか、わざわざこう動くように実装されていました。
OpenGLのマニュアルでは特に記述は見当たりませんが、実質的にはコンテキストを気にせずにglDeleteTextures()を呼んでも問題なさそうです。