C#2.0時代のゲームプログラミング(10)


pure C#OpenGLのPictureBoxへの描画に成功した。C++で書かれたOpenGLのwrapper等は一切不要だ。OpenGLで描画した経験さえあれば、描画自体は出来るだろう。だけど難しいのはここからだ。


OpenGLプログラミングガイド 第2版―The Official Guide to Learning OpenGL,Version 1.1


先にも説明した通り、RC(Rendering Context)をHWndに対して生成している。すなわち、RCはHWndにattachされている。(結びついている)


このことは、PictureBoxが二つある場合、片方のPictureBoxに描画するため、RCをactiveにして、テクスチャを読み込む。そして描画行なう。ところが、そうやって読み込まれたテクスチャは、もう一方のPictureBoxには描画できない。なぜなら、glGenTexturesで割り当てられる番号は、RCごとに1番から割り振られるからである。


OpenGLリファレンスマニュアル


すなわち、あるテスクスチャを解放するときに、そのテクスチャを読み込むときにactiveにしていたRCとは異なるRCをactiveにしていると間違ったテスクチャが解放されてしまう。すなわち、テスクチャを解放するためにそれに対応したRCが必要になる。このことはプログラムを非常に複雑化する。


Studio Dragoonさんのところの記事で書かれていた「レンダリングコンテキストの取得が少々面倒」は正確には「レンダリングコンテキストの切り替えが大変面倒」なのである。では、どうするのか?(つづく)