ユーザ用ツール

サイト用ツール


サイドバー

About

Contents

Materials Link

その他

PR


wiki:opengl:tips:003

003 点、線、四角形の描画

概要

点、線、四角形を何か表示してみます。

#include <GL/freeglut.h> 
 
// 頂点情報。 
struct FloatVertex 
{ 
	float x; 
	float y; 
	float z; 
}; 
 
// 色情報。 
struct FloatColor 
{ 
	float r; 
	float g; 
	float b; 
	float a; 
}; 
 
// 頂点配列情報 
static const FloatVertex Vertices[] = 
{ 
	{ -0.5f, 0.5f, 0.0	},	// 左上 
}; 
 
// カラー配列情報 
static const FloatColor Colors[] = 
{ 
	{ 1.0f,	0.0f, 0.0f,	1.0f }, 
}; 
 
// 描画順 
static const GLuint Indices[] = 
{ 
	0, 
}; 
 
//	ディスプレイコールバック 
void displayCallBack() 
{ 
	// クリアカラーの設定。 
	glClearColor( 1.0, 1.0, 1.0, 1.0 ); 
 
	// 画面クリア。 
	glClear( GL_COLOR_BUFFER_BIT ); 
 
	// 点の大きさ指定。 
	glPointSize( 10.0f ); 
 
	// 描画。 
	glDrawElements( GL_POINTS, sizeof(Indices)/sizeof(Indices[0]), GL_UNSIGNED_INT, Indices ); 
 
	// ダブルバッファ交換。 
	glutSwapBuffers(); 
} 
 
// メイン 
int main( int argc, char *argv[] ) 
{ 
	// GLUTの初期化 
	glutInit( &argc, argv ); 
 
	// ウインドウの表示モード指定 
	glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA ); 
 
	// ウインドウ生成 
	glutCreateWindow( argv[0] ); 
 
	// 頂点、カラーのセットアップ。 
	{ 
		// 頂点配列のメモリアドレスの指定 
		glVertexPointer( 3, GL_FLOAT, 0, Vertices ); 
		glEnableClientState( GL_VERTEX_ARRAY ); 
 
		// カラー配列のメモリアドレスの指定 
		glColorPointer( 4, GL_FLOAT, 0, Colors ); 
		glEnableClientState( GL_COLOR_ARRAY ); 
	} 
 
	// ディスプレイ コールバックの登録。 
	glutDisplayFunc( displayCallBack ); 
 
	// メインループ 
	glutMainLoop(); 
 
	return 0; 
} 

// 頂点配列情報 
static const FloatVertex Vertices[] = 
{ 
	{ -0.5f, -0.5f, 0.0	},	// 左下 
	{  0.5f, -0.5f, 0.0	},	// 右下 
	{  0.5f,  0.5f, 0.0	},	// 右上 
	{ -0.5f,  0.5f, 0.0	},	// 左上 
}; 
// カラー配列情報 
static const FloatColor Colors[] = 
{ 
	{ 1.0f,	0.0f, 0.0f,	1.0f }, 
	{ 0.0f,	1.0f, 0.0f,	1.0f }, 
	{ 0.0f,	0.0f, 1.0f,	1.0f }, 
	{ 1.0f,	0.0f, 1.0f,	1.0f }, 
}; 
 
// 描画順 
static const GLuint Indices[] = 
{ 
	0, 1, 2, 3, 
}; 
 
//	ディスプレイコールバック 
void displayCallBack() 
{ 
	// クリアカラーの設定。 
	glClearColor( 1.0, 1.0, 1.0, 1.0 ); 
 
	// 画面クリア。 
	glClear( GL_COLOR_BUFFER_BIT ); 
 
	// 描画。 
	glDrawElements( GL_LINE_LOOP, sizeof(Indices)/sizeof(Indices[0]), GL_UNSIGNED_INT, Indices ); 
 
	// ダブルバッファ交換。 
	glutSwapBuffers(); 
} 

四角形

// 頂点配列情報 
static const FloatVertex Vertices[] = 
{ 
	{ -0.5f,  0.5f, 0.0	},	// 左上 
	{ -0.5f, -0.5f, 0.0	},	// 左下 
	{  0.5f,  0.5f, 0.0	},	// 右上 
	{  0.5f, -0.5f, 0.0	},	// 右下 
}; 
 
// カラー配列情報 
static const FloatColor Colors[] = 
{ 
	{ 1.0f,	0.0f, 0.0f,	1.0f }, 
	{ 0.0f,	1.0f, 0.0f,	1.0f }, 
	{ 0.0f,	0.0f, 1.0f,	1.0f }, 
	{ 1.0f,	0.0f, 1.0f,	1.0f }, 
}; 
 
// 描画順 
static const GLuint Indices[] = 
{ 
	0, 1, 2, 3, 
}; 
 
// ディスプレイコールバック 
void displayCallBack() 
{ 
	// クリアカラーの設定。 
	glClearColor( 1.0, 1.0, 1.0, 1.0 ); 
 
	// 画面クリア。 
	glClear( GL_COLOR_BUFFER_BIT ); 
 
	// 描画。 
	glDrawElements( GL_TRIANGLE_STRIP, sizeof(Indices)/sizeof(Indices[0]), GL_UNSIGNED_INT, Indices ); 
 
	// ダブルバッファ交換。 
	glutSwapBuffers(); 
} 
wiki/opengl/tips/003.txt · 最終更新: 2014/11/07 03:30 (外部編集)