01.ベースOpenGLレンダラクラスを作る



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

プロジェクトの作成

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


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


次へボタンを押します。


アプリケーションの種類:Windows アプリケーション
空のプロジェクト:チェックしない
で完了ボタンを押します。

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

ベースOpenGLレンダラクラスの作成

「メニュー/プロジェクト/クラスの追加」でクラス名「COpenGLRendererBase」のクラスを作成します。


テンプレート:C++ クラス
で追加ボタンを押します。


クラス名:COpenGLRendererBase
で完了ボタンを押します。

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

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

stdafx.h の末尾に、 assert.h のインクルードを追加します。



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

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

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



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

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

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



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

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

OpenGLRendererBase.h のベースOpenGLレンダラクラス定義にメンバ変数、メンバ関数の宣言を追加します。



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

メンバ変数の初期化

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



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

OpenGL初期化処理

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



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

OpenGL終了処理

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



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

ビューポート設定処理

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



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

視野角錐台設定処理

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



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

視点座標変換処理

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



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

サイズ変更処理

OpenGLRendererBase.cpp の末尾にサイズ変更処理の定義を追加します。



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

描画処理

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



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

レンダラオブジェクトの宣言

ModelViewer.cpp に、
#include "OpenGLRendererBase.h"
および
COpenGLRendererBase glrenderer;
を追加します。



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

ウィンドウスタイルの変更

OpenGLが他のウィンドウに描画するのを防ぐために、ModelViewer.cpp の InitInstance関数内のCreateWindows関数呼び出しのウィンドウスタイルパラメータに、WS_CLIPSIBLINGS と WS_CLIPCHILDREN を追加します。



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

WM_PAINTメッセージ処理の変更

ModelViewer.cpp の WndProc関数の、WM_PAINTメッセージ処理の、BeginPaintとEndPaintの間に描画処理の呼び出しを追加します。



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

WM_DESTROYメッセージ処理の変更

ModelViewer.cpp の WndProc関数の、WM_DESTROYメッセージ処理に、OpenGL終了処理の呼び出しを追加します。



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

WM_ERASEBKGNDメッセージ処理の追加

画面の描画はOpenGLがすべてを行うので、既定の画面背景消去処理を無効にします。
ModelViewer.cpp の WndProc関数に、WM_DESTROYメッセージ処理を追加します。
処理は、return 1; とします。



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

WM_SIZEメッセージ処理の追加

ModelViewer.cpp の WndProc関数に、WM_SIZEメッセージ処理を追加します。
サイズ変更処理の呼び出しを追加します。



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

実行

実行結果

ダウンロード

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

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