前回のサンプルコードを眺めていて、これじゃ、HTML上に複数インスタンスを置けないよなぁ?と、いう事で、複数インスタンスに対応してみる事に…。すると、描画がおかしい。いろいろと突っ込んでみて、わかった事。
- 基本的な事ですが、wglMakeCurrent( hDC, hGLRC ) から wglMakeCurrent( NULL, NULL ) までがインスタンス毎に排他的に行われる必要がある。
- Google Chrome が WM_PAINT メッセージをまともによこさない。WM_ERASEBKGND メッセージで代用しているのか?
- Google Chrome は、WM_NULL メッセージをタイマーのように送信している。
- Firefox のスクロールバーで移動後の再描画メカニズムがおかしい。WM_PAINT が呼ばれているようなのだが、その後にウィンドウ領域をクリアしているのか?領域計算がおかしくて WM_PAINT をよこさないケースがあるのか?原因が特定できないけど、描画されない場合がある。
最初は、Google Chrome 行儀悪りーと思っていたが、WM_ERASEBKGND メッセージ時にも描画処理を行えば対処が可能な Google Chrome の方が御し易い。アニメーションしない Flash は、スクロール・バーでスクロールさせると白く抜ける現象を起こしたりしないのかなぁ?という疑問が…。
0 件のコメント:
コメントを投稿