Ver 1.07
OpenGL描画領域を提供します。
書式
typedef void (* LP_IMAGE_GLPROC)();
CP_BOOL AttachOpenGL(CPWindow *lpWin,LP_IMAGE_GLPROC lpProc);
CP_BOOL AttachOpenGL(CPGroup *lpGroup,LP_IMAGE_GLPROC lpProc);
|
パラメータ
lpWin
親にあたるウィンドウ(CPWindow)のポインタを渡します。
lpGroup
親がグループ(CPGroup)の場合のポインタを渡します。
「lpGroup->GetParentWindow( )」とした場合と同じ意味になります。
lpProc
「void xxxx( )」型のstatic関数を指定します。
OpenGLの描画処理を行うコールバック関数を指定します。
解説
OpenGLの描画領域を提供します。
このメソッドは、「CPImage::SetBounds」「CPImage::SetSize」でイメージのサイズを決定する前に呼び出すようにしてください。
このメソッドを呼び出した場合、CPImageクラスの他の描画関数(「CPImage::ClearImage」「CPImage::DrawLine」「CPImage::DrawPolygon」など)を使用することができなくなります。
OpenGLによる描画命令(glClearColor、glBegin、glVertex3f、glEndなど)を、このコールバック関数内で記述することにより、再描画のタイミング(画面の自動更新・または「CPImage::Repaint」が呼ばれた場合)で
OpenGLを使用した描画を行うことができるようになります。
「CPImage::AttachOpenGL」の第一引数には、親となるウィンドウ「CPWindow」(またはグループ「CPGroup」)クラスのポインタを渡すようにしてください。
このOpenGLの機能を使用する場合は、OpenGLの開発環境(SDK)が必要になります。

Windows上の開発環境が「Visual C++ 6.0」の場合は、SDKのインストールは不要です(Visual C++の開発環境に含まれています)。
プロジェクトのリンク時にライブラリ「opengl32.lib」が必要になります。
また、ソースの先頭の#include指定で「#include <GL/gl.h>」
を追加するようにしてください。

「http://developer.apple.com/opengl/」より「OpenGL 1.2 SDK」以降をダウンロードしてください。
ここで展開される「Headers」フォルダにヘッダが、「Libraries」にライブラリが入っています。
これらを検索できるように、CodeWarriorの環境設定でパスを通すようにしておいてください。
リンク時には、OpenGL SDKの「Libraries」フォルダ内にある「OpenGLLibraryStub」が必要になります。
プロジェクトに加えるようにしてください。
また、ソースの先頭の#include指定で「#include <GL/gl.h>」
を追加するようにしてください。
例
ウィンドウ(ダイアログ)を生成して、その中にイメージを配置します。
このイメージ内でOpenGL描画を行います。
#include <GL/gl.h>
//OpenGLの描画処理
static void OnDrawOpenGL(){
glClearColor(0.0f , 0.7f , 0.7f , 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
glColor3f ( 1.0f , 0.0f , 0.0f);
glVertex3f ( 0.0f , 0.8f , 0.0f);
glColor3f ( 0.0f , 1.0f , 0.0f);
glVertex3f (-0.8f ,-0.8f , 0.0f);
glColor3f ( 0.0f , 0.0f , 1.0f);
glVertex3f ( 0.8f ,-0.8f , 0.0f);
glEnd();
}
void main()
{
CPWindow win;
CPImage image;
//ダイアログを生成する
win.Clear();
win.CreateNewDialog("TestDialog",120,120,200,200);
//OpenGLモードにする(「SetBounds」より先にこのメソッドを呼ぶこと)
image.AttachOpenGL(&win,OnDrawOpenGL);
//イメージの位置・サイズを指定
image.SetBounds(10,10,160,160);
//イメージをCPWindowに結びつける
win.Add(&image);
//モーダルダイアログの表示
win.DoModal();
}
この例の場合、OpenGLの描画処理でstatic関数「OnDrawOpenGL」が呼ばれ、結果として以下のような画像が生成されます。

ビルド時に必要なファイル
ライブラリ
|
:CPartsLib.lib (Macintoshの場合は、CPartsCW.a)
|
ヘッダ
|
:CPImage.h
|
OpenGL関数を使用した場合
|
ライブラリ
|
:opengl32.lib (Macintoshの場合は、OpenGLLibraryStub)
|
ヘッダ
|
:GL/gl.h
|
関連リンク
CPImageクラス
CPImage::SetBounds
CPImage::SetSize
CPImage::Repaint