ユーザ用ツール

サイト用ツール

サイドバー

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();
}
Permalink wiki/opengl/tips/003.txt · 最終更新: 2014/11/07 03:30 (外部編集)

oeffentlich