LoginSignup
1
1

More than 5 years have passed since last update.

Macで GLUT + OpenGL のんびりいこう#5 Draw 3DCube

Last updated at Posted at 2015-01-12

前提

Mac OSX 10.7.5
Developer Tool

目標

立方体の描画

cube.cpp

cube.cpp
#include <GLUT/glut.h>

#define WIDTH 640
#define HEIGHT 480

//blue
GLfloat blue[] = { 0.0, 0.0, 1.0, 1.0 };
//ライトの位置
//GLfloat lightpos[] = { 200.0, 150.0, -500.0, 1.0 };
GLfloat lightpos[] = { 400.0, 300.0, -250.0, 1.0 };

void display(void){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glViewport(0, 0, WIDTH, HEIGHT);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    //視野角,アスペクト比(ウィンドウの幅/高さ),描画する範囲(最も近い距離,最も遠い距離)
    //gluPerspective(30.0, (double)WIDTH / (double)HEIGHT, 1.0, 1000.0);
    gluPerspective(25.0, (double)WIDTH / (double)HEIGHT, 1.0, 1000.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    //視点の設定
    gluLookAt(150.0,100.0,-200.0, //カメラの座標
      0.0,0.0,0.0, // 注視点の座標
     0.0,1.0,0.0); // 画面の上方向を指すベクトル
    //ライトの設定
    glLightfv(GL_LIGHT0, GL_POSITION, lightpos);
    //マテリアルの設定
    glMaterialfv(GL_FRONT, GL_DIFFUSE, blue);
    glutSolidCube(30.0);
    glutSwapBuffers();
}

void idle(void){
    glutPostRedisplay();
}

void Init(){
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
}

int main(int argc, char *argv[]){
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(WIDTH, HEIGHT);
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
    glutCreateWindow("cube");
    glutDisplayFunc(display);
    glutIdleFunc(idle);
    Init();
    glutMainLoop();
    return 0;
}

コンパイル

framework指定が要点です。
g++ -o cube cube.cpp -framework GLUT -framework OpenGL
最近はワーニングが出るようになったので、-w
g++ -o cube cube.cpp -framework GLUT -framework OpenGL -w

Result

スクリーンショット 2015-01-12 12.36.22.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1