Modified lines:  6, 9
Added line:  47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 82
Removed line:  None
Generated by diff2html.pl
© Yves Bailly, MandrakeSoft S.A. 2001, Ryohei Morita 2007
diff2html.pl is licensed under the GNU GPL.

  31-HelloSquare.c     32-KillbyESC.c
  83 lines
2402 bytes
Last modified : Mon Oct 24 10:48:43 2011

    101 lines
3086 bytes
Last modified : Mon Oct 24 10:47:47 2011

1 // Keisanki Joron 2 (Introduction to Computing II)   1 // Keisanki Joron 2 (Introduction to Computing II)
2 // Dept. of Engineering Systems, University of Tsukuba   2 // Dept. of Engineering Systems, University of Tsukuba
3 // [UTF-8 / Unix]   3 // [UTF-8 / Unix]
4   4
5 // 2011/10/24 kameda[at]iit.tsukuba.ac.jp   5 // 2011/10/24 kameda[at]iit.tsukuba.ac.jp
6 // 3.1. Hello Square    6 // 3.2. Kill Program by ESC key
7 //      プログラムは強制終了しないといけないので危険   7 //      プログラムは強制終了しないといけないので危険
8   8
9 #include <stdio.h>   9 #include <stdlib.h> // exit()
10 #include <GL/glut.h>   10 #include <GL/glut.h>
11   11
12 // +----------------------------------------------------   12 // +----------------------------------------------------
13 // Global Variables   13 // Global Variables
14 // +----------------------------------------------------   14 // +----------------------------------------------------
15   15
16 // +----------------------------------------------------   16 // +----------------------------------------------------
17 // 正方形を描く (白色の線幅 1.0)   17 // 正方形を描く (白色の線幅 1.0)
18 // +----------------------------------------------------   18 // +----------------------------------------------------
19 void ic2_FigSquare (float s) {   19 void ic2_FigSquare (float s) {
20   glColor3f(1.0, 1.0, 1.0);   20   glColor3f(1.0, 1.0, 1.0);
21   glLineWidth(1.0);   21   glLineWidth(1.0);
22   glBegin(GL_LINE_LOOP); {   22   glBegin(GL_LINE_LOOP); {
23     glVertex3f(s * -1, s * -1, 0.0);   23     glVertex3f(s * -1, s * -1, 0.0);
24     glVertex3f(s * +1, s * -1, 0.0);   24     glVertex3f(s * +1, s * -1, 0.0);
25     glVertex3f(s * +1, s * +1, 0.0);   25     glVertex3f(s * +1, s * +1, 0.0);
26     glVertex3f(s * -1, s * +1, 0.0);   26     glVertex3f(s * -1, s * +1, 0.0);
27   } glEnd();   27   } glEnd();
28 }   28 }
29   29
30 // +----------------------------------------------------   30 // +----------------------------------------------------
31 // スクリーンに描画する   31 // スクリーンに描画する
32 // +----------------------------------------------------   32 // +----------------------------------------------------
33 void ic2_DrawFrame (void) {   33 void ic2_DrawFrame (void) {
34   34
35   // 以前にglClearColor()で指定した色で塗り潰す   35   // 以前にglClearColor()で指定した色で塗り潰す
36   glClear(GL_COLOR_BUFFER_BIT);   36   glClear(GL_COLOR_BUFFER_BIT);
37   37
38   // 物体描画:正方形   38   // 物体描画:正方形
39   ic2_FigSquare(0.9);   39   ic2_FigSquare(0.9);
40   40
41   // スクリーンの切り替え   41   // スクリーンの切り替え
42   glutSwapBuffers();   42   glutSwapBuffers();
43   43
44 }   44 }
45   45
46 // +----------------------------------------------------   46 // +----------------------------------------------------
      47 // キーが何か押されたときの対策用関数 
      48 // +----------------------------------------------------
      49 // glutKeyboardFunc()にて登録予定
      50 // 引数 : key ... 入力文字 
      51 // 引数 : x   ... 文字が押されたときのマウスカーソルのX位置 
      52 // 引数 : y   ... 文字が押されたときのマウスカーソルのY位置 
      53 void ic2_NormalKeyInput (unsigned char key, int x, int y) {
      54   switch (key) {
      55   case 'q' :
      56   case 'Q' :
      57   case 27 : // ESCキーのこと
      58     exit (0);
      59     break;
      60   }
      61 }
      62
      63 // +----------------------------------------------------
47 // OpenGLとしてのWindowの初期化   64 // OpenGLとしてのWindowの初期化
48 // +----------------------------------------------------   65 // +----------------------------------------------------
49 void ic2_BootWindow (char winname[]) {   66 void ic2_BootWindow (char winname[]) {
50   67
51   // ダブルバッファ,RGB表色モード を利用   68   // ダブルバッファ,RGB表色モード を利用
52   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);    69   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); 
53   70
54   // ウィンドウを開く   71   // ウィンドウを開く
55   glutCreateWindow(winname);   72   glutCreateWindow(winname);
56   73
57   // レンダリングにはSmooth Shadingを採用   74   // レンダリングにはSmooth Shadingを採用
58   glShadeModel(GL_SMOOTH);   75   glShadeModel(GL_SMOOTH);
59   76
60   // ウィンドウ全体を書き直すときの色(ここでは黒)   77   // ウィンドウ全体を書き直すときの色(ここでは黒)
61   glClearColor(0.0, 0.0, 0.0, 0.0);   78   glClearColor(0.0, 0.0, 0.0, 0.0);
62   79
63   // Callback関数を設定 (イベント処理)   80   // Callback関数を設定 (イベント処理)
64   glutIdleFunc(ic2_DrawFrame); // 暇だったらフレームを描く(よい実装ではない)   81   glutIdleFunc(ic2_DrawFrame); // 暇だったらフレームを描く(よい実装ではない)
      82   glutKeyboardFunc(ic2_NormalKeyInput); // キーが押されたときの準備
65 }   83 }
66   84
67 //d main.c  **********************************************************************   85 //d main.c  **********************************************************************
68 // +----------------------------------------------------   86 // +----------------------------------------------------
69 // Main Function   87 // Main Function
70 // +----------------------------------------------------   88 // +----------------------------------------------------
71 int main (int argc, char *argv[]) {   89 int main (int argc, char *argv[]) {
72   90
73   // glutライブラリによる引数の解釈   91   // glutライブラリによる引数の解釈
74   glutInit(&argc, argv);   92   glutInit(&argc, argv);
75   93
76   // OpenGL Window の初期化   94   // OpenGL Window の初期化
77   ic2_BootWindow(argv[0]);   95   ic2_BootWindow(argv[0]);
78   96
79   // 無限ループの開始   97   // 無限ループの開始
80   glutMainLoop();   98   glutMainLoop();
81      99   
82   return 0;   100   return 0;
83 }   101 }

Generated by diff2html.pl on Mon Oct 24 12:32:55 2011
Command-line:
/home/ubuntu/scripts/diff2html.pl 31-HelloSquare.c 32-KillbyESC.c