2011年3月23日 星期三

作業1 元智夜景

主題介紹

天空在對你微笑

這是一張兩年前某個夜晚出現的天空


(金星是地球所見最亮的行星,木星則是次亮的行星,木星與金星在仰角四十度位置,與上弦眉形的月亮,正好像兩個眼睛配上一張微笑的嘴。)

過程與成果展示

一開始我先用GL_POLYGON畫了上圖的笑臉






若是只有這個微笑,似乎有點太單調了

接著我再使用GL_POLYGON畫出操場


還是覺得有些單調,我再用GL_LINES畫出左上跟右上的煙火


然後再畫上星星,採用隨機產生的位置


再利用Mod來形成星星的明暗不同



心得與討論

這是我第一次用Open GL寫程式


一開始寫得時候還很擔心會不會無法完成這個作業

但在開始用之後,才發現Open GL好有趣

在我畫笑臉的時候,因為座標沒算好

一再的讓笑臉變成哭臉




而在畫煙火時,看了Blog的範例

本來打算要用glLineStipple,GL_LINE_STRIP,glRotatef來畫

但查了很久的資料,依舊不會用glRotatef

所以只好放棄使用比較熟練的GL_LINES來完成。

本來希望煙火與星星可以利用Sleep來做出一閃一閃的感覺

但不知道為什麼,當我用一個For loop包住Sleep時

for(n=0;n<10;n++)
                                                                   {
    .
    .
    .
    Sleep(500);
                                                                   }

本來以為每跑一次迴圈會停留0.5秒,即可做出我理想中一閃一閃的感覺

但程式真的在run的時候

卻是等整個迴圈跑完(5秒),才跳出整個視窗的畫面


 

不知道是不是以前用來更新畫面的Sleep用法在OpenGL上不能用?

.
.
.


最後

試了很久都沒辦法完成,只好利用Mod做顏色的不同來塑造另外一種感覺。


再利用glutPostRedisplay(),使視窗更新


來做出"一閃一閃亮晶晶"的感覺




希望在寫作業二的時候可以對OpenGL更熟練