テクスチャとレンダリングコンテキスト
OpenGLのテストコードを整理して、簡単なテクスチャを貼ってみました。
コード整理の差分
テクスチャ追加の差分
OpenGLの関数はどれもレンダリングコンテキストを指定できなくて、wglMakeCurrent()やglXMakeCurrent()で予め切り替えておく必要があるわけですが、この仕様はRAIIと相性が悪いです。
class texture { public: texture() { ::glGenTextures(1, &handle_); } ~texture() { ::glDeleteTextures(1, &handle_); } private: ::GLuint handle_; };
みたいなコードでは、glGenTextures()とglDeleteTextures()で違うレンダリングコンテキストが使用される可能性があります。
仕方がないので、とりあえずglGenTextures()とglDeleteTextures()の前にコンテキストを設定し直すようにしています。
ただ、何かする度にコンテキストを切り替えていてはパフォーマンスが悪いので、使い勝手とのトレードオフをしながら調整していくことにします。