#include <GL/glut.h> float points[] ={ 0,0,0, //v0 1,0,0, //v1 1,1,0, //v2 0,1,0, //v3 0,0,-1, //v4 1,0,-1, //v5 1,1,-1, //v6 0,1,-1, //v7 }; GLuint index[]={ 0,1,2,3, 1,5,6,2, 5,4,7,6, 4,0,3,7, 4,5,1,0, 3,2,6,7 }; //---------- プロトタイプ宣言 --------------// void display(); void reshape(int w, int h); void DRAW(); //------------ OpenGLの初期設定 --------------// void GLUT_INIT() { glutInitDisplayMode(GLUT_RGBA| GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(640,480); glutCreateWindow("Draw Elements"); } void GLUT_CALL_FUNC() { glutDisplayFunc(display); glutReshapeFunc(reshape); } void MY_INIT() { glClearColor(1.0, 1.0, 1.0, 1.0); glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); } //--------- メイン関数 ---------// int main(int argc, char **argv) { glutInit(&argc,argv); GLUT_INIT(); GLUT_CALL_FUNC(); MY_INIT(); glutMainLoop(); return 0; } //----------- ここからコールバック ---------------// void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(3.0, 4.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); //視点の設定 DRAW(); //描画 glutSwapBuffers(); //ウィンドウに出力 } void reshape(int w, int h) { glViewport(0, 0, w, h); //ビューポートの設定 glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0); //視野の設定 glMatrixMode(GL_MODELVIEW); } //----------- ここから各種関数 ------------// void DRAW() { glColor3d(1,0,1); glEnableClientState(GL_VERTEX_ARRAY); glVertexPointer(3, GL_FLOAT, 0, points); //1頂点は3つで構成、float型、オフセット0、データ元 glDrawElements(GL_QUADS, 24, GL_UNSIGNED_INT, index); glDisableClientState(GL_VERTEX_ARRAY); glColor3d(1,1,1); }