iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
『OpenGL+GLSLによる物理ベースCGアニメーション』では、独自の動物の物体を描画していたが、これを動かすようにするのは大変と思うし、本質的でないのでGLUTで用意されているティーポットを使うことにした。
このティーポットはソリッドとワイヤーフレームの二種類が用意されているので、wキーが押下されるとトグルで切り替わるようにした。
int width = 600;
int height = 500;
BOOL isWireframe = NO;
void resize(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
width = w;
height = h;
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if (! isWireframe)
glutSolidTeapot(0.5);
else
glutWireTeapot(0.5);
glutSwapBuffers();
}
void keyboard(unsigned char key, int x, int y)
{
switch((unsigned char)key) {
case 'w':
isWireframe = !isWireframe;
break;
}
}
void idle(void)
{
glutPostRedisplay();
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
glutInit(&argc, (char **)argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(width, height);
glutInitWindowPosition(500, 100);
glutCreateWindow("IRIS GL");
glutReshapeFunc(resize);
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutSpecialFunc(special);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutIdleFunc(idle);
init();
glutMainLoop();
}
return 0;
}
まだ、平面なのでワクワク感が足らないが。