はちゅね追記
昨日の記事に対してさっそく突っ込みをいただきましたので紹介します。
ソースのForm1.csの中にglContrl1_SizeChangedというイベントハンドラがあります。このイベントハンドラは、glControl1(OpenTKが提供する、OpenGLで描画できるコントロール)の初期化が終わらないうちに呼ばれてしまうようで、初期の版ではGLメソッドの呼び出しでNullReferenceExceptionが起きていました。
何か変だと思いつつ、しかたがないので昨日のプログラムでは、Hatyuneインスタンスが作成済みかどうかをチェックするという気持ち悪い方法で回避しているのですが、
実は、GLControlのSizeChangedイベントが、GLの初期化が行われる前に呼び出されるというのはGLControlの仕様なのだそうです。それで、SizeChangedイベントハンドラでは、必ずGLControl.IsHandleCreatedというプロパティを見て、falseなら何もしないで戻るように書くものなのだそうです。
ドキュメントは一通り読んでいるつもりが、そういう記述の記憶はなかったので、どこに書いてあるのと聞いたら「OpenTKのソース中にコメントで書いてある」って…。どうしてそれが仕様ということになるかな。わけがわからないよ!
« C# でも「はちゅね」 | トップページ | iriver Story HD買いました »


コメント