1.ベースOpenGLビュークラスを作る
OpenGLの初期化処理と終了処理を行い、OpenGLを用いた描画処理の骨格を担う、ベースOpenGLビュークラスを作成します。
実行形式ファイルダウンロード (BaseOpenGL_exe.lzh)
ソースファイルダウンロード (BaseOpenGL_src.lzh)
プロジェクトの作成
プロジェクトの種類:MFC AppWizard (exe)
プロジェクト名:BaseOpenGL
位置:適当なフォルダを指定
それ以外:デフォルト設定のまま
でプロジェクトを作成します(OKボタンを押します)。
作成するアプリケーションの種類:SDI
それ以外:デフォルト設定のまま
で次へボタンを押します。
設定を変更せず次へボタンを押します。
設定を変更せず次へボタンを押します。
印刷および印刷プレビュー:チェックを外します
それ以外:デフォルト設定のまま
で次へボタンを押します。
設定を変更せず次へボタンを押します。
設定を変更せず終了ボタンを押します。
OKボタンを押します。
ビルドし、エラー、警告がないことを確認します。
OpenGLのヘッダーファイルのインクルード
BaseOpenGLView.h に以下の3行のOpenGLのヘッダーファイルのインクルードを追加します。
#include <gl\gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>
ビルドし、エラー、警告がないことを確認します。
OpenGLのlibファイルをプロジェクトに追加
BaseOpenGLView.cpp に以下の3行のOpenGLのlibファイルをプロジェクトに追加する記述を追加します。
#pragma comment( lib, "opengl32.lib"
)
#pragma comment( lib, "glu32.lib"
)
#pragma comment( lib, "glaux.lib"
)
ビルドし、エラー、警告がないことを確認します。
メンバ変数、メンバ関数の宣言の追加
BaseOpenGLView.h のベースOpenGLビュークラス宣言の最後にメンバ変数、メンバ関数の宣言を追加します。
ビルドし、エラー、警告がないことを確認します。
メンバ変数の初期化
ベースOpenGLビュークラスのコンストラクタにメンバ変数の初期化を追加します。
ビルドし、エラー、警告がないことを確認します。
PreCreateWindow()の編集
OpenGLが他のウィンドウに描画するのを防ぐために以下の行をベースOpenGLビュークラスのPreCreateWindow関数に追加します。
cs.style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN;
ビルドし、エラー、警告がないことを確認します。
OnEraseBkgnd()の追加、編集
ClassWizardを用いて、ベースOpenGLビュークラスにWM_ERASEBKGNDメッセージに対応するメッセージハンドラOnEraseBkgndを追加します。
画面の描画はOpenGLがすべてを行うので、既定の画面背景消去処理を無効にします。
元からあるreturn文をコメントアウトし、
return TRUE;
を追加します。
ビルドし、エラー、警告がないことを確認します。
OnSize()の追加、編集
ベースOpenGLビュークラスにWM_SIZEメッセージに対応するメッセージハンドラOnSizeを追加します。
OpenGL初期化処理、ビューポート設定処理、視野角錐台設定処理、視点座標変換処理のメンバ関数の呼び出しを追加します。
OpenGL初期化処理の定義を追加します。
ビューポート設定処理の定義を追加します。
視野角錐台設定処理の定義を追加します。
視点座標変換処理の定義を追加します。
ビルドし、エラー、警告がないことを確認します。
OnDestroy()の追加、編集
ベースOpenGLビュークラスにWM_DESTROYメッセージに対応するメッセージハンドラOnDestroyを追加します。
OpenGL終了処理を追加します。
ビルドし、エラー、警告がないことを確認します。
OnDraw()の編集
描画に関するOpenGL関数の呼び出しおよびメンバ関数の呼び出しを追加します。
描画に関するメンバ関数の定義を追加します。
ビルドし、エラー、警告がないことを確認します。
実行
実行結果