01.ベースOpenGLビュークラスを作る



OpenGLの初期化処理と終了処理を行い、OpenGLを用いた描画処理の骨格を担う、ベースOpenGLビュークラスを作成します。

プロジェクトの作成

「メニュー/新規作成/プロジェクト」を選択します。

プロジェクトの種類:MFC
テンプレート:MFC アプリケーション
プロジェクト名:OpenGLBase
場所:適当なフォルダを指定
ソリューションのディレクトリの作成:チェックしない
でOKボタンを押します。



次へボタンを押します。


アプリケーションの種類:シングル ドキュメント
プロジェクト形式:MFC 標準
MFCの使用:共有DLLでMFCを使用
ドキュメント ビュー アーキテクチャー サポート:チェックする
リソース言語:日本語
ユニコードライブラリを使用する:チェックする
で次へボタンを押します。


設定を変更せず次へボタンを押します。


設定を変更せず次へボタンを押します。


設定を変更せず次へボタンを押します。


設定を変更せず次へボタンを押します。


コンテキストヘルプ:チェックしない
印刷と印刷プレビュー:チェックしない
オートメーション:チェックしない
ActiveXコントロール:チェックしない
MAPI(メッセージ API):チェックしない
Windows ソケット:チェックしない
アクティブなアクセシビティサポート:チェックしない
コモンコントロールマニフェスト:チェックしない
で次へボタンを押します。


設定を変更せず完了ボタンを押します。

ビルドし、エラー、警告がないことを確認します。

OpenGLのヘッダーファイルのインクルード

OpenGLBaseView.h に以下の2行のOpenGLのヘッダーファイルのインクルードを追加します。
#include <gl\gl.h>
#include <gl\glu.h>



ビルドし、エラー、警告がないことを確認します。

OpenGLのlibファイルをプロジェクトに追加

OpenGLBaseView.cpp に以下の2行のOpenGLのlibファイルをプロジェクトに追加する記述を追加します。
#pragma comment( lib, "opengl32.lib" )
#pragma comment( lib, "glu32.lib" )



ビルドし、エラー、警告がないことを確認します。

メンバ変数、メンバ関数の宣言の追加

OpenGLBaseView.h のベースOpenGLビュークラス定義の最初にメンバ変数、メンバ関数の宣言を追加します。



ビルドし、エラー、警告がないことを確認します。

メンバ変数の初期化

OpenGLBaseView.cpp のベースOpenGLビュークラスのコンストラクタにメンバ変数の初期化を追加します。



ビルドし、エラー、警告がないことを確認します。

OpenGL初期化処理

OpenGLBaseView.cpp にOpenGL初期化処理の定義を追加します。



ビルドし、エラー、警告がないことを確認します。

OpenGL終了処理

OpenGLBaseView.cpp にOpenGL終了処理の定義を追加します。



ビルドし、エラー、警告がないことを確認します。

ビューポート設定処理

OpenGLBaseView.cpp にビューポート設定処理の定義を追加します。



ビルドし、エラー、警告がないことを確認します。

視野角錐台設定処理

OpenGLBaseView.cpp に視野角錐台設定処理の定義を追加します。



ビルドし、エラー、警告がないことを確認します。

視点座標変換処理

OpenGLBaseView.cpp に視点座標変換処理の定義を追加します。



ビルドし、エラー、警告がないことを確認します。

視点座標変換処理

OpenGLBaseView.cpp に描画処理の定義を追加します。



ビルドし、エラー、警告がないことを確認します。

PreCreateWindow関数の編集

OpenGLが他のウィンドウに描画するのを防ぐために、以下の行を OpenGLBaseView.cpp のベースOpenGLビュークラスのPreCreateWindow関数に追加します。
cs.style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN;



ビルドし、エラー、警告がないことを確認します。

OnEraseBkgnd関数の追加、編集

プロパティウィンドウを用いて、ベースOpenGLビュークラスにWM_ERASEBKGNDメッセージに対応するメッセージハンドラOnEraseBkgnd関数を追加します。

画面の描画はOpenGLがすべてを行うので、既定の画面背景消去処理を無効にします。
元からあるreturn文をコメントアウトし、
return TRUE;
を追加します。



ビルドし、エラー、警告がないことを確認します。

OnSize関数の追加、編集

ベースOpenGLビュークラスにWM_SIZEメッセージに対応するメッセージハンドラOnSize関数を追加します。
OpenGL初期化処理、ビューポート設定処理、視野角錐台設定処理、視点座標変換処理のメンバ関数の呼び出しを追加します。



ビルドし、エラー、警告がないことを確認します。

OnDestroy関数の追加、編集

ベースOpenGLビュークラスにWM_DESTROYメッセージに対応するメッセージハンドラOnDestroy関数を追加します。
OpenGL終了処理のメンバ関数の呼び出しを追加します。



ビルドし、エラー、警告がないことを確認します。

OnDraw関数の編集

OpenGLBaseView.cpp のOnDraw関数に描画に関するOpenGL関数の呼び出しおよび描画処理のメンバ関数の呼び出しを追加します。



ビルドし、エラー、警告がないことを確認します。

実行

実行結果

ダウンロード

実行形式ファイルダウンロード (ModelViewerOpenGLMFC2005_01_exe.lzh)

ソースファイルダウンロード (ModelViewerOpenGLMFC2005_01_src.lzh)