トップ «前の日記(2012-11-06) 最新 次の日記(2012-11-08)» 編集

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|

2012-11-07 [OSX]Teapot

『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;
}

まだ、平面なのでワクワク感が足らないが。

Teapot

_ ソースコード

GitHubからどうぞ。
https://github.com/murakami/workbook/tree/master/mac/IRIS - GitHub

_ 関連情報

Using GLUT and OpenGL on Mac OS X
OpenGL Progrmming Guide for Mac
OpenGL Programming on Mac OS X
OpenGL+GLSLによる物理ベースCGアニメーション

_ 【Cocoa練習帳】

http://www.bitz.co.jp/weblog/
http://ameblo.jp/bitz/(ミラー・サイト)

トップ «前の日記(2012-11-06) 最新 次の日記(2012-11-08)» 編集