点、線、四角形を何か表示してみます。
#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(); }