強火で進め

このブログではプログラム関連の記事を中心に書いてます。

(Mac)三角形の描画

MacOpenGLを使って三角形の描画を行います。
最終的にレンダリングされる画像はこの様なものになります。

プロジェクトの作成

Xcodeのプロジェクトを作成します。ここではMacプログラムでよく使用される「Cocoa Application」テンプレートではなく「Standard Tool」を使用します。

こちらは「Command Line Utility」のグループに存在します。

OpenGLを使用するための前準備

MacOpenGLを使用する場合は事前に関連するフレームワークを追加しておかないといけません。具体的には OpenGL.framework と今回、GLUTというライブラリを使用するのでこちらに対応するフレームワーク GLUT.framework も合わせて追加します。

パスはそれぞれ以下となります。

/システム/ライブラリ/Frameworks/OpenGL.framework

/システム/ライブラリ/Frameworks/GLUT.framework

主な描画処理部分は以下の記述となります。

	glBegin(GL_TRIANGLES);
	{
		glVertex3f(0.0, 1.0, 0.0);
		glVertex3f(0.0, 0.0, 0.0);
		glVertex3f(1.0, 0.0, 0.0);
	}
	glEnd();

glVertex3f() コマンドで三角形のそれぞれの頂点を順番に指定します。
引数は順番にX座標、Y座標、Z座標の指定となります。

プログラムの全文は以下となります。

#include <glut/glut.h>

// 描画のコールバック関数
void display(void)
{
	glClear(GL_COLOR_BUFFER_BIT); // 背景色で画面をクリアする
	glBegin(GL_TRIANGLES);
	{ // Xcodeでインデントがキャンセルされない様に使うTips
		glVertex3f(0.0, 1.0, 0.0); // 描画する頂点の位置を指定
		glVertex3f(0.0, 0.0, 0.0);
		glVertex3f(1.0, 0.0, 0.0);
	}
	glEnd();
	glFlush();	// 描画処理終了をハードウェアに通知
				// (ハードウェア上で処理が保留になっているものが存在する可能性があるため)
}

int main(int argc, char* argv[])
{
	glutInit(&argc, argv);				// GLUTの初期化処理。常に mian() 関数の引数をそのまま渡す
	glutInitDisplayMode(GLUT_RGBA);		// ウィンドウの画面モードの設定 
	glutInitWindowPosition(100, 100);	// ウィンドウの表示位置設定
	glutInitWindowSize(500, 500);		// ウィンドウ(描画部分)のサイズを指定
	glutCreateWindow("Example");		// ウィンドウの作成。引数にはタイトル名を渡す
	glutDisplayFunc(display);			// 描画処理が必要な場合に呼ばれるコールバック関数
	glutMainLoop();						// メインループ
	
	return 0;
}

(2017/04/06 追記)
MacOS X 10.9以降では警告が出る様になりました。
対処方法は XcodeOS X Deployment Target で OS X 10.8 以前を選択。

床井研究室 - MacOS X 10.9 / Xcode 5 で GLUT を使うと警告が出る
http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20140617

(追記ここまで)

ソースコードこちら

iPhone3Dプログラミング講座の一覧はこちら