サイトマップ
お知らせ、メモ
案内板
うちのヘッドライン
 




トップ  >  プログラム豆知識  >  VC2008豆知識  >  Visual C++ .NETでOpenGLを使用する際の注意

Visual C++ .NETでOpenGLを使用する際の注意

VC.NETでOpenGLを使う場合、いくつか注意点があるので、まとめてみました。

初期化

ピクセルフォーマットを指定したり、 レンダリングコンテキストとウィンドウハンドルを結びつけるところでウィンドウハンドルが必要になりますが、 VC.NETでは以下のようにしてハンドルを取得するらしいです。 (参考サイトを見失ってしまいました。申し訳ありません。)

	// フォーム側から
	int hWnd = this->Handle.ToInt32()

で、これをHWNDでキャストして各関数に渡します。

なお、User32.libとリンクする必要があります。

	// デバイスコンテキストを取得する
	HDC hDC = ::GetDC( (HWND)hWnd );
	
	// デバイスコンテキストからピクセルフォーマットを選択
	nPixelformat = ChoosePixelFormat( hDC, &pfd );

なお、一連の初期化処理は、Formのコンストラクタで行っていいらしいです。

Formに描画する際の基本

Formのプロパティ

いじらずにデフォルトのままにしておきます。 "DoubleBufferd"も"False"を指定しておきます。

描画

初期化のところと同様にウィンドウハンドルを取得して、::wglMakeCurrent()を実行し、普通に描画することができます。 ::SwapBuffer()もOpenGLの描画側から行います。

ただし、描画はOnPaint()ではなく、OnPaintBakuground()から行います。

こちらにサンプルプロジェクトをおいてみました。 スムーズに回転すれば当たり!ちらついたりしたら、どうしよう。

実行形式はこちらからどうぞ。

VC2008が無い場合は、 Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86) が必要な場合があります。


クリエイティブ・コモンズ・ライセンス
This documents by Yamate,N is licensed under a Creative Commons 表示 - 継承 3.0 非移植 License.
login