初めてのNSOpenGLView

[:W240:right]

やあ子供たち元気にしてたかな、三連休もあっというまだったね。今日はおじさんはCocoa環境でOpenGLの基本画面を出すやり方を調べたのでメモしておくぞ。

developer.apple.comにあるこのページの一番簡単なやり方でやってみる。

●方針
既存ウィンドウにNSOpenGLViewという部品を貼付けて、OpenGLを利用することになる。NSOpenGLViewは、その定義矩形領域内部がそのままOpenGLの描画領域になるというものだ。まずはこの部品の動作をObjective-Cクラスとして定義する。次に、UI部品としてOpenGLView部品を作成配置し、予め作成しておいたObjecive-Cクラスと関連づけを行う、という流れだ。では行ってみよう。

●手順

  1. Cocoaプロジェクトを作成する。適当にプロジェクト名をつける。
  2. OpenGLFrameworkを追加する。
  3. 新規作成で、Objective-Cクラスを追加する。MyOpenGLViewとか適当に名前をつける。
  4. MyOpenGLViewが、NSObjectではなく、NSOpenGLViewを継承するように書き換える。
  5. で、drawRectメソッドをオーバーライドし、その中に最低限のOpenGLコードを書く。最後にglFlush();を呼ぶのを忘れない。
  6. Xibの編集に入る。プロジェクトのリソースの中の、XibフォルダをダブルクリックしてInterfaceBuilderを開く。
  7. OpenGLView部品をライブラリから持ってきてアプリのメインウィンドウに貼付ける。
  8. 貼付けたOpenGLView部品を選択した状態で、Tools > Inspector > identity タブ画面冒頭のClassとして、予め作っておいたMyOpenGLViewを選択設定する。(?で、NSOpenGLViewを継承してさえいれば、ここでMyOpenGLViewが選択できるようになっている。)

●コード
MyOpenGLView.h

#import <Cocoa/Cocoa.h>
@interface MyOpenGLView : NSOpenGLView
{
}
-(void)drawRect:(NSRect)bounds;
@end

MyOpenGLView.m

#import "MyOpenGLView.h"
@implementation MyOpenGLView
-(void)drawRect:(NSRect)bounds{
	glClearColor( 0,0,0,0 );
	glClear( GL_COLOR_BUFFER_BIT );
	glBegin( GL_TRIANGLES );
	glColor3f(1,0,0);
	glVertex3f( 0,1,0 );
	glColor3f(1,1,0);
	glVertex3f( -1,0,0 );
	glColor3f(1,0,1);
	glVertex3f( 1,0,0 );	
	glEnd();
	glFlush();
}
@end

以上が、XCode3.2.4で現状やってみた感じの、Cocoaで最低限のOpenGL画面を出すやり方だ。下についてるスライダーバーとかの動きはこれからなので、また今度。