プロフィール

Zecca(ダニ)

Author:Zecca(ダニ)
FC2ブログへようこそ!

検索フォーム
ブロとも申請フォーム

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

私的メモ

#include


/*正方形の座標*/


GLdouble vertex[][3] =
{
{0.0, 0.0, 0.0},//A
{1.0, 0.0, 0.0},//B
{1.0, 1.0, 0.0},//C
{0.0, 1.0, 0.0},//D
{0.0, 0.0, 1.0},//E
{1.0, 0.0, 1.0},//F
{1.0, 1.0, 1.0},//G
{0.0, 1.0, 1.0} //H
};



/*正方形の座標*/

/*-線描画はないためコメントアウト
//正方形ライン(線)用配列
int edge[][2] =
{
{0, 1},//A-B
{1, 2},//B-C
{2, 3},//C-D
{3, 0},//D-A
{4, 5},//E-F
{5, 6},//F-G
{6, 7},//G-H
{7, 4},//H-E
{0, 4},//A-E
{1, 5},//B-F
{2, 6},//C-G
{3, 7},//D-H
};
*/

//正四面体描画用座標指定
int face[][4] =
{
{0, 1, 2, 3},
{1, 5, 6, 7},
{5, 4, 6, 7},
{4, 0, 3, 7},
{4, 5, 1, 0},
{3, 2, 6, 7},
};


GLdouble normal[][3] =
{
{0.0, 0.0,-1.0},
{1.0, 0.0, 0.0},
{0.0, 0.0, 1.0},
{-1.0, 0.0,0.0},
{0.0,-1.0, 0.0},
{0.0, 1.0, 0.0},

};

GLfloat light0pos[] = { 0.0, 3.0, 5.0, 1.0};
GLfloat light1pos[] = { 5.0, 3.0, 0.0, 1.0};

GLfloat green[] = { 0.0, 1.0, 0.0, 1.0 };
GLfloat red[] = { 0.8, 0.2, 0.2, 1.0 };

void cube (void)
{
int i;
int j;

glBegin(GL_QUADS);
for( j = 0; j < 6; ++j);
{
glNormal3dv(normal[j]);
glColor3dv((double)red);
for( i = 0; i < 4; ++i)
{
glVertex3dv(vertex[face[j][i]]);
}
}
glEnd();
}


void idle(void)
{
glutPostRedisplay();
}

void display(void)
{
static int r = 0;//回転角度

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

//光源の位置調整
glLightfv(GL_LIGHT0, GL_POSITION, light0pos);
glLightfv(GL_LIGHT1, GL_POSITION, light1pos);

//モデルビュー変換行列の保存
glPushMatrix();

//図形の回転
glRotated((double)r, 0.0, 1.0, 0.0);

//図形の色:赤
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, red);

//図形の描画
cube();

glutSolidCube(1.0);

//2つめの図形描画
glPushMatrix();
glTranslated(1.0, 1.0, 1.0);
glRotated((double)(2 * r), 0.0, 1.0, 0.0);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, green);
cube();

glutSolidCube(1.0);

glPopMatrix();

//モデルビュー変換行列の復帰
glPopMatrix();

glutSwapBuffers();

//一周回ったら回転数を0に戻す
if(++r >= 360)
{
r = 0;
}

}

void resize(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);
glLoadIdentity();
gluLookAt(3.0, 4.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}
void mouse(int button, int state, int x, int y)
{
switch(button)
{
case GLUT_LEFT_BUTTON:
if(state == GLUT_DOWN)
{
//アニメーション開始
glutIdleFunc(idle);
}
else
{
glutIdleFunc(0);
}
break;

case GLUT_RIGHT_BUTTON:
if(state == GLUT_DOWN)
{
//コマ送り(1ステップすすめる)
glutPostRedisplay();
}
break;

default:
break;
}
}

void keyboard(unsigned char key, int x, int y)
{
switch(key)
{
case 'q':
case '\033'://ESCキーのアスキーコード
exit(0);

default:
break;
}

}

void init(void)
{
glClearColor(1.0, 1.0, 1.0, 1.0);

glEnable(GL_DEPTH_TEST);

glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_LIGHT1);
glLightfv(GL_LIGHT1, GL_DIFFUSE, green);
glLightfv(GL_LIGHT1, GL_SPECULAR, green);

}




int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA| GLUT_DOUBLE| GLUT_DEPTH);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
glutReshapeFunc(resize);
glutMouseFunc(mouse);
glutKeyboardFunc(keyboard);
init();
glutMainLoop();
return 0;
}
スポンサーサイト

他人へ向けた言葉は、ほとんど自分への言葉ともなりうる

さて、秋も深まってまいりました。

また懸賞を考えています。

なににしよう?

家具がいいかな。

装備でもいいかな。

※今回の懸賞はユニコーンサーバに限ります。

コメントにこんなのがいいんじゃないってのをかいてください


FF11・ブログ

↑おしてくれるとよろこびます

続きを読む

テーマ : FINALFANTASY XI
ジャンル : オンラインゲーム

当選発表!

えーととりあえず 抽選発表です

続きを読む

テーマ : FINALFANTASY XI
ジャンル : オンラインゲーム

無駄な贅沢は人生の浪費である

追加ディスク「モグ祭りの夜」がはっぴょうされました!

ぶっちゃけ今回は興味0です!

オーグメントがよっぽど優秀じゃないとね ゚+。ゥフフ(o-艸-o)ゥフフ。+゚

簡単なコンテンツだったら、やってもいいかもって

おもっちゃいますね。

続きを読む

テーマ : FINALFANTASY XI
ジャンル : オンラインゲーム

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。