テクスチャとレンダリングコンテキスト

テクスチャを貼ってみた図

OpenGLのテストコードを整理して、簡単なテクスチャを貼ってみました。
コード整理の差分
テクスチャ追加の差分


OpenGLの関数はどれもレンダリングコンテキストを指定できなくて、wglMakeCurrent()やglXMakeCurrent()で予め切り替えておく必要があるわけですが、この仕様はRAIIと相性が悪いです。

class texture
{
public:
    texture()
    {
        ::glGenTextures(1, &handle_);
    }

    ~texture()
    {
        ::glDeleteTextures(1, &handle_);
    }

private:
    ::GLuint handle_;
};

みたいなコードでは、glGenTextures()とglDeleteTextures()で違うレンダリングコンテキストが使用される可能性があります。
仕方がないので、とりあえずglGenTextures()とglDeleteTextures()の前にコンテキストを設定し直すようにしています。
ただ、何かする度にコンテキストを切り替えていてはパフォーマンスが悪いので、使い勝手とのトレードオフをしながら調整していくことにします。