Modified lines:  6, 7, 131
Added line:  8, 9, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25, 26, 110, 111, 112, 113, 114, 115, 116, 132, 133, 134, 135, 136, 137, 138, 159, 160, 161, 162, 163, 164, 165, 174, 175, 176, 177, 178, 179, 180, 201, 202, 203, 204, 205, 206, 207
Removed line:  None
Generated by UTF-8 version of diff2html.pl
© Yves Bailly, MandrakeSoft S.A. 2001, Ryohei Morita 2007
diff2html.pl is licensed under the GNU GPL.

  ../06-09/06-09-LogoOpenGL.c     07-01-Planning.c
  174 lines
6508 bytes
Last modified : Wed Dec 14 04:50:16 2011

    224 lines
8716 bytes
Last modified : Mon Nov 5 13:44:16 2012

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 // 計算機序論2・実習 (筑波大学工学システム学類)   4 // 計算機序論2・実習 (筑波大学工学システム学類)
5   5
6 // 2011/12/14a kameda[at]iit.tsukuba.ac.jp   6 // 2012/11/05a kameda[at]iit.tsukuba.ac.jp
7 // 06.09. はじめてのOpenGL - コードクリーニング -   7 // 07.01. プログラムの構造設計
      8
      9 // *********************************************************************** 
      10 // CommonHeaders.h : common header files *********************************
      11
      12 // +++--------------------------------------------------
      13 // どの部分ソースでも利用する可能性が高いライブラリ(関数)に
      14 // 相当するヘッダファイル
      15 // +++--------------------------------------------------
8   16
9 #include <stdio.h> // printf()   17 #include <stdio.h> // printf()
10 #include <GL/glut.h> // gl*(), glut*()   18 #include <GL/glut.h> // gl*(), glut*()
11   19
      20 // *********************************************************************** 
      21 // EmbededObjects ********************************************************
      22
      23 // +++--------------------------------------------------
      24 // ソース内部でのCG物体の直接描画
      25 // +++--------------------------------------------------
      26
12 // +----------------------------------------------------   27 // +----------------------------------------------------
13 // OpenGL Logoを描く   28 // OpenGL Logoを描く
14 // +----------------------------------------------------   29 // +----------------------------------------------------
15 // s はスケーリングファクタ(s=1.0 で 概ね -1.0 〜 1.0 の大きさ)   30 // s はスケーリングファクタ(s=1.0 で 概ね -1.0 〜 1.0 の大きさ)
16 void ic2_OpenGLLogo (float s) {   31 void ic2_OpenGLLogo (float s) {
17 // 光源によるシェーディング効果を切る(と色の指定が直接色になる)   32 // 光源によるシェーディング効果を切る(と色の指定が直接色になる)
18   glDisable(GL_LIGHTING);      33   glDisable(GL_LIGHTING);   
19   34
20   // 線の幅(画素単位)   35   // 線の幅(画素単位)
21   glLineWidth(1.0);   36   glLineWidth(1.0);
22   37
23   // (R, G, B) 値域は 0.0 - 1.0   38   // (R, G, B) 値域は 0.0 - 1.0
24   glColor3f(1.0, 1.0, 1.0);   39   glColor3f(1.0, 1.0, 1.0);
25   40
26   // glBegin(GL_LINES); から glEnd(); までの間は、   41   // glBegin(GL_LINES); から glEnd(); までの間は、
27   // 「始点・終点」ごとに線分が描画される   42   // 「始点・終点」ごとに線分が描画される
28   glBegin(GL_LINES);    43   glBegin(GL_LINES); 
29   glVertex3f(s * -0.8, s *  0.8, 0.0); glVertex3f(s * -0.8, s *  0.2, 0.0); // O   44   glVertex3f(s * -0.8, s *  0.8, 0.0); glVertex3f(s * -0.8, s *  0.2, 0.0); // O
30   glVertex3f(s * -0.8, s *  0.2, 0.0); glVertex3f(s * -0.4, s *  0.2, 0.0); // O   45   glVertex3f(s * -0.8, s *  0.2, 0.0); glVertex3f(s * -0.4, s *  0.2, 0.0); // O
31   glVertex3f(s * -0.4, s *  0.2, 0.0); glVertex3f(s * -0.4, s *  0.8, 0.0); // O   46   glVertex3f(s * -0.4, s *  0.2, 0.0); glVertex3f(s * -0.4, s *  0.8, 0.0); // O
32   glVertex3f(s * -0.4, s *  0.8, 0.0); glVertex3f(s * -0.8, s *  0.8, 0.0); // O   47   glVertex3f(s * -0.4, s *  0.8, 0.0); glVertex3f(s * -0.8, s *  0.8, 0.0); // O
33   48
34   glVertex3f(s * -0.2, s *  0.6, 0.0); glVertex3f(s * -0.2, s *  0.0, 0.0); // p   49   glVertex3f(s * -0.2, s *  0.6, 0.0); glVertex3f(s * -0.2, s *  0.0, 0.0); // p
35   glVertex3f(s * -0.2, s *  0.6, 0.0); glVertex3f(s *  0.0, s *  0.6, 0.0); // p   50   glVertex3f(s * -0.2, s *  0.6, 0.0); glVertex3f(s *  0.0, s *  0.6, 0.0); // p
36   glVertex3f(s *  0.0, s *  0.6, 0.0); glVertex3f(s *  0.0, s *  0.2, 0.0); // p   51   glVertex3f(s *  0.0, s *  0.6, 0.0); glVertex3f(s *  0.0, s *  0.2, 0.0); // p
37   glVertex3f(s *  0.0, s *  0.2, 0.0); glVertex3f(s * -0.2, s *  0.2, 0.0); // p   52   glVertex3f(s *  0.0, s *  0.2, 0.0); glVertex3f(s * -0.2, s *  0.2, 0.0); // p
38   53
39   glVertex3f(s *  0.2, s *  0.4, 0.0); glVertex3f(s *  0.4, s *  0.4, 0.0); // e   54   glVertex3f(s *  0.2, s *  0.4, 0.0); glVertex3f(s *  0.4, s *  0.4, 0.0); // e
40   glVertex3f(s *  0.4, s *  0.4, 0.0); glVertex3f(s *  0.4, s *  0.6, 0.0); // e   55   glVertex3f(s *  0.4, s *  0.4, 0.0); glVertex3f(s *  0.4, s *  0.6, 0.0); // e
41   glVertex3f(s *  0.4, s *  0.6, 0.0); glVertex3f(s *  0.2, s *  0.6, 0.0); // e   56   glVertex3f(s *  0.4, s *  0.6, 0.0); glVertex3f(s *  0.2, s *  0.6, 0.0); // e
42   glVertex3f(s *  0.2, s *  0.6, 0.0); glVertex3f(s *  0.2, s *  0.2, 0.0); // e   57   glVertex3f(s *  0.2, s *  0.6, 0.0); glVertex3f(s *  0.2, s *  0.2, 0.0); // e
43   glVertex3f(s *  0.2, s *  0.2, 0.0); glVertex3f(s *  0.4, s *  0.2, 0.0); // e   58   glVertex3f(s *  0.2, s *  0.2, 0.0); glVertex3f(s *  0.4, s *  0.2, 0.0); // e
44   59
45   glVertex3f(s *  0.6, s *  0.6, 0.0); glVertex3f(s *  0.6, s *  0.2, 0.0); // n   60   glVertex3f(s *  0.6, s *  0.6, 0.0); glVertex3f(s *  0.6, s *  0.2, 0.0); // n
46   glVertex3f(s *  0.6, s *  0.6, 0.0); glVertex3f(s *  0.8, s *  0.6, 0.0); // n   61   glVertex3f(s *  0.6, s *  0.6, 0.0); glVertex3f(s *  0.8, s *  0.6, 0.0); // n
47   glVertex3f(s *  0.8, s *  0.6, 0.0); glVertex3f(s *  0.8, s *  0.2, 0.0); // n   62   glVertex3f(s *  0.8, s *  0.6, 0.0); glVertex3f(s *  0.8, s *  0.2, 0.0); // n
48   63
49   glVertex3f(s *  0.0, s * -0.2, 0.0); glVertex3f(s * -0.6, s * - 0.2, 0.0); // G   64   glVertex3f(s *  0.0, s * -0.2, 0.0); glVertex3f(s * -0.6, s * - 0.2, 0.0); // G
50   glVertex3f(s * -0.6, s * -0.2, 0.0); glVertex3f(s * -0.6, s * - 0.8, 0.0); // G   65   glVertex3f(s * -0.6, s * -0.2, 0.0); glVertex3f(s * -0.6, s * - 0.8, 0.0); // G
51   glVertex3f(s * -0.6, s * -0.8, 0.0); glVertex3f(s *  0.0, s * - 0.8, 0.0); // G   66   glVertex3f(s * -0.6, s * -0.8, 0.0); glVertex3f(s *  0.0, s * - 0.8, 0.0); // G
52   glVertex3f(s *  0.0, s * -0.8, 0.0); glVertex3f(s *  0.0, s * - 0.5, 0.0); // G   67   glVertex3f(s *  0.0, s * -0.8, 0.0); glVertex3f(s *  0.0, s * - 0.5, 0.0); // G
53   glVertex3f(s *  0.0, s * -0.5, 0.0); glVertex3f(s * -0.3, s * - 0.5, 0.0); // G   68   glVertex3f(s *  0.0, s * -0.5, 0.0); glVertex3f(s * -0.3, s * - 0.5, 0.0); // G
54   69
55   glVertex3f(s *  0.2, s * -0.2, 0.0); glVertex3f(s *  0.2, s * - 0.8, 0.0); // L   70   glVertex3f(s *  0.2, s * -0.2, 0.0); glVertex3f(s *  0.2, s * - 0.8, 0.0); // L
56   glVertex3f(s *  0.2, s * -0.8, 0.0); glVertex3f(s *  0.8, s * - 0.8, 0.0); // L   71   glVertex3f(s *  0.2, s * -0.8, 0.0); glVertex3f(s *  0.8, s * - 0.8, 0.0); // L
57   glEnd();   72   glEnd();
58   73
59   // glBegin(GL_LINE_LOOP); から glEnd(); までの間は、   74   // glBegin(GL_LINE_LOOP); から glEnd(); までの間は、
60   // 全ての頂点を使った閉じた線分が描画される   75   // 全ての頂点を使った閉じた線分が描画される
61   76
62   // 左上隅   77   // 左上隅
63   glColor3f(1.0, 1.0, 1.0);   78   glColor3f(1.0, 1.0, 1.0);
64   glBegin(GL_LINE_LOOP);   79   glBegin(GL_LINE_LOOP);
65   glVertex3f(s * -1.0, s *  1.0, 0.0);   80   glVertex3f(s * -1.0, s *  1.0, 0.0);
66   glVertex3f(s * -0.8, s *  1.0, 0.0);   81   glVertex3f(s * -0.8, s *  1.0, 0.0);
67   glVertex3f(s * -1.0, s *  0.8, 0.0);   82   glVertex3f(s * -1.0, s *  0.8, 0.0);
68   glEnd();   83   glEnd();
69      84   
70   // 右上隅   85   // 右上隅
71   glColor3f(0.1, 1.0, 1.0);   86   glColor3f(0.1, 1.0, 1.0);
72   glBegin(GL_LINE_LOOP);   87   glBegin(GL_LINE_LOOP);
73   glVertex3f(s *  0.8, s *  1.0, 0.0);   88   glVertex3f(s *  0.8, s *  1.0, 0.0);
74   glVertex3f(s *  1.0, s *  1.0, 0.0);   89   glVertex3f(s *  1.0, s *  1.0, 0.0);
75   glVertex3f(s *  1.0, s *  0.8, 0.0);   90   glVertex3f(s *  1.0, s *  0.8, 0.0);
76   glEnd();   91   glEnd();
77   92
78   // 左下隅   93   // 左下隅
79   glColor3f(1.0, 0.1, 1.0);   94   glColor3f(1.0, 0.1, 1.0);
80   glBegin(GL_LINE_LOOP);   95   glBegin(GL_LINE_LOOP);
81   glVertex3f(s * -1.0, s * -0.8, 0.0);   96   glVertex3f(s * -1.0, s * -0.8, 0.0);
82   glVertex3f(s * -0.8, s * -1.0, 0.0);   97   glVertex3f(s * -0.8, s * -1.0, 0.0);
83   glVertex3f(s * -1.0, s * -1.0, 0.0);   98   glVertex3f(s * -1.0, s * -1.0, 0.0);
84   glEnd();   99   glEnd();
85   100
86   // 右下隅   101   // 右下隅
87   glColor3f(1.0, 1.0, 0.1);   102   glColor3f(1.0, 1.0, 0.1);
88   glBegin(GL_LINE_LOOP);   103   glBegin(GL_LINE_LOOP);
89   glVertex3f(s *  0.8, s * -1.0, 0.0);   104   glVertex3f(s *  0.8, s * -1.0, 0.0);
90   glVertex3f(s *  1.0, s * -0.8, 0.0);   105   glVertex3f(s *  1.0, s * -0.8, 0.0);
91   glVertex3f(s *  1.0, s * -1.0, 0.0);   106   glVertex3f(s *  1.0, s * -1.0, 0.0);
92   glEnd();   107   glEnd();
93 }   108 }
94   109
      110 // *********************************************************************** 
      111 // Projection ************************************************************
      112
      113 // +++--------------------------------------------------
      114 // カメラの投影行列を設定
      115 // +++--------------------------------------------------
      116
95 // +----------------------------------------------------   117 // +----------------------------------------------------
96 // 直交投影   118 // 直交投影
97 // +----------------------------------------------------   119 // +----------------------------------------------------
98 void ic2_SetUpCamera_Ortho (void) {   120 void ic2_SetUpCamera_Ortho (void) {
99   // OpenGLのPROJECTION行列スタックにアクセス   121   // OpenGLのPROJECTION行列スタックにアクセス
100   glMatrixMode(GL_PROJECTION);   122   glMatrixMode(GL_PROJECTION);
101   123
102   // PROJECTION行列スタックトップを単位行列で初期化   124   // PROJECTION行列スタックトップを単位行列で初期化
103   glLoadIdentity();    125   glLoadIdentity(); 
104   126
105   // 直交投影行列を生成するサポート関数 glOrtho を呼び出す   127   // 直交投影行列を生成するサポート関数 glOrtho を呼び出す
106   // glOrtho(左端, 右端, 下端, 上端, 近接側クリッピング面,  遠方側クリッピング面)   128   // glOrtho(左端, 右端, 下端, 上端, 近接側クリッピング面,  遠方側クリッピング面)
107   glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); //    129   glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); // 
108 }   130 }
109   131
      132 // *********************************************************************** 
      133 // Rendering *************************************************************
      134
      135 // +++--------------------------------------------------
      136 // スクリーンに描画する
      137 // +++--------------------------------------------------
      138
110 // +----------------------------------------------------   139 // +----------------------------------------------------
111 // 1フレーム分の描画   140 // 1フレーム分の描画
112 // +----------------------------------------------------   141 // +----------------------------------------------------
113 void ic2_DrawFrame (void) {   142 void ic2_DrawFrame (void) {
114   // (1) 描画バッファの初期化   143   // (1) 描画バッファの初期化
115   // 以前にglClearColor()で指定した色で塗り潰す   144   // 以前にglClearColor()で指定した色で塗り潰す
116   glClear(GL_COLOR_BUFFER_BIT);   145   glClear(GL_COLOR_BUFFER_BIT);
117   146
118   // (2) カメラの設定   147   // (2) カメラの設定
119   ic2_SetUpCamera_Ortho();   148   ic2_SetUpCamera_Ortho();
120   149
121   // (3) 光源の設置   150   // (3) 光源の設置
122   151
123   // (4) 物体の描画   152   // (4) 物体の描画
124   ic2_OpenGLLogo(0.95);   153   ic2_OpenGLLogo(0.95);
125   154
126   // (5) 描画バッファの切替   155   // (5) 描画バッファの切替
127   glutSwapBuffers();   156   glutSwapBuffers();
128 }   157 }
129   158
      159 // *********************************************************************** 
      160 // Callback ************************************************************** 
      161
      162 // +++--------------------------------------------------
      163 // GLUTでのイベント駆動型プログラミング
      164 // +++--------------------------------------------------
      165
130 // +----------------------------------------------------   166 // +----------------------------------------------------
131 // タイマーで呼出し(繰り返すことで「一定間隔呼出し」化)   167 // 「タイマー」で呼出し(繰り返すことで「一定間隔呼出し」化)
132 // +----------------------------------------------------   168 // +----------------------------------------------------
133 void ic2_timerhandler(int keynumber){   169 void ic2_timerhandler(int keynumber){
134   glutPostRedisplay(); // OpenGLのmainloopに戻ったら再描画を頼む   170   glutPostRedisplay(); // OpenGLのmainloopに戻ったら再描画を頼む
135   glutTimerFunc(250, ic2_timerhandler, 0); // 250[ms]後にまた呼び出す   171   glutTimerFunc(250, ic2_timerhandler, 0); // 250[ms]後にまた呼び出す
136 }   172 }
137   173
      174 // *********************************************************************** 
      175 // Initialization ******************************************************** 
      176
      177 // +++--------------------------------------------------
      178 // 初期化(主にGLUT)
      179 // +++--------------------------------------------------
      180
138 // +----------------------------------------------------   181 // +----------------------------------------------------
139 // OpenGLとしてのWindowの初期化   182 // OpenGLとしてのWindowの初期化
140 // +----------------------------------------------------   183 // +----------------------------------------------------
141 void ic2_BootWindow (char winname[]) {   184 void ic2_BootWindow (char winname[]) {
142   185
143   // DisplayModeの設定(それぞれを|で繋ぐ)   186   // DisplayModeの設定(それぞれを|で繋ぐ)
144   //   GLUT_DOUBLE ... ダブルバッファ   187   //   GLUT_DOUBLE ... ダブルバッファ
145   //   GLUT_RGB    ... RGB表色モード   188   //   GLUT_RGB    ... RGB表色モード
146   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);    189   glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); 
147   190
148   // 準備(Initialization)が済んだらウィンドウを開く   191   // 準備(Initialization)が済んだらウィンドウを開く
149   glutCreateWindow(winname);   192   glutCreateWindow(winname);
150   193
151   // Callback関数を設定 (イベント処理)   194   // Callback関数を設定 (イベント処理)
152   glutDisplayFunc(ic2_DrawFrame); // フレームを(再)描画するために呼び出す関数   195   glutDisplayFunc(ic2_DrawFrame); // フレームを(再)描画するために呼び出す関数
153   glutTimerFunc(250, ic2_timerhandler, 0); // 250[ms]後に呼び出す関数   196   glutTimerFunc(250, ic2_timerhandler, 0); // 250[ms]後に呼び出す関数
154   197
155   // ウィンドウ全体を書き直すときの色(R,G,B,0) ここでは黒   198   // ウィンドウ全体を書き直すときの色(R,G,B,0) ここでは黒
156   glClearColor(0.0, 0.0, 0.0, 0.0);   199   glClearColor(0.0, 0.0, 0.0, 0.0);
157 }   200 }
      201
      202 // *********************************************************************** 
      203 // MainFunction ********************************************************** 
      204
      205 // +----------------------------------------------------
      206 // メイン関数など
      207 // +----------------------------------------------------
158   208
159 // +----------------------------------------------------   209 // +----------------------------------------------------
160 // Main Function   210 // Main Function
161 // +----------------------------------------------------   211 // +----------------------------------------------------
162 int main (int argc, char *argv[]) {   212 int main (int argc, char *argv[]) {
163   213
164   // glutライブラリによる引数の解釈   214   // glutライブラリによる引数の解釈
165   glutInit(&argc, argv);   215   glutInit(&argc, argv);
166   216
167   // OpenGL Window の初期化   217   // OpenGL Window の初期化
168   ic2_BootWindow(argv[0]);   218   ic2_BootWindow(argv[0]);
169   219
170   // 無限ループの開始   220   // 無限ループの開始
171   glutMainLoop();   221   glutMainLoop();
172      222   
173   return 0;   223   return 0;
174 }   224 }

Generated by diff2html.pl on Thu Feb 6 07:50:09 2014
Command-line:
/home/ubuntu/www-mirror/2013-tsukuba-ic2/code/diff2html_utf8.pl ../06-09/06-09-LogoOpenGL.c 07-01-Planning.c