#include " STDAFX.H " の#include <GL / glut.h> の#include <math.h>の 書式#include <STDLIB.H> CONST ダブル TWO_PI = 6.2831853 。/ * 初期表示ウィンドウサイズ* / GLsizei winWidth = 400、winHeight = 400 。 GLuint regHex; クラスscreenPt { プライベート: グリントX、Y。公共: / * デフォルトコンストラクタ:初期化しますが、(0,0)に位置を調整します。* / screenPt(){X = Y = 0 ; } ボイド setGoords(グリントxGoord、グリントyGoord){X = xGoord。Y = yGoord。} 輝きのgetX()のconst { 戻りX。} 輝きのgetY()のconst { 戻りY。} }。 静的 ボイドのinit(ボイド) { screenPt hexVertex、circCtr。 GLdoubleシータ; GLINT kを、 / * 設定した円の中心座標。* / circCtr.setGoords(winWidth / 2、winHeight / 2 )。 glClearColor(1.0、1.0、1.0、0.0)。// 表示ウィンドウの色=白。 / * 赤正六角形の表示リストを設定します。 *六角形のためのヴェルは、6つの等間隔に配置されている 円の円周の周りに*ポイント。 * / regHex = glGenLists(1)。// 表示リストの識別子を取得します。 glNewList(regHex、GL_COMPILE)。 glColor3f(1.0、0.0、0.0)。// 赤に六角に設定された塗りつぶしの色。 glBegin(GL_POLYGON)。 用(K =0 ; K < 6。K ++ ) { シータ = TWO_PI * K / 6.0 。 hexVertex.setGoords(circCtr.getx() + 150の * COS(シータ)、 circCtr.gety() + 150 * 罪(シータ)); glVertex2i(hexVertex.getx()、hexVertex.gety())。 } glEndの()。 glEndList(); } ボイド regHexagon(ボイド) { にglClear(GL_COLOR_BUFFER_BIT)。 glCallList(regHex)。 glFlush(); } のボイドwinReshapeFcn(グリントnewWidth、グリントnewHeight) { glMatrixMode(GL_PROJECTION)。 glLoadIdentity(); gluOrtho2D(0.0、(GLdouble)newWidth、0.0 (GLdouble)newHeight)。 glClear(GL_COLOR_BUFFER_BIT)。 } ボイドメイン(int型 ARGC、チャー ** ARGV) { glutInit( &ARGC、ARGV)。 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)。 glutInitWindowPosition(100、100 )。 glutInitWindowSize(winWidth、winHeight)。 glutCreateWindow("およびディスプレイ・ListExampleファンクションを再構築」) のinit(); glutDisplayFunc(regHexagon); glutReshapeFunc(winReshapeFcn); glutMainLoop(); }