程式設計與寫作方法:
主要就是大量地使用 glBegin(GL_POLYGON),偶爾使用到 glBegin(GL_TRIANGLES)、glBegin(GL_LINES),以及 glBegin(GL_POINTS)。
這是我的參考圖:
一開始是先建構出一個一館的外觀模型:
一開始是使用兩個 glBegin(GL_POLYGON)來做模型。我之前用過 glBegin(GL_QUAD_STRIP)來做,但是若去換顏色的話,會變成漸層的效果,這並不是我要的,所以我選擇了用 glBegin(GL_POLYGON)來做模型。
好的,其實後來發現,從這邊開始就已經很不像原圖了,雖然我很想做出逼真的一館,但是你們應該也知道,到最後其實牽一髮動全身呀!
因為到目前為止所學有限,估狗神爺上面的資料雖然不算少,但是資料大多非常古老了。所以其實我的寫法是非常暴力,可以說是一點一線慢慢描繪出來的。
成果展示:
這是我的結果。我使用的glOrtho是以1000為單位,因為用預設1的話,我眼睛會脫窗。
左右兩邊的窗戶其實用幾個for迴圈,在微調一下就可以達成。
左邊的樹我很偷懶,先設定好範圍,用rand()取座標值,再用GL_POINTS來隨機亂點畫,至於點的大小是使用了 glPointSize(size)來決定大小。樹幹部分,是用glBegin(GL_POLYGON)做出來的結果。
花最多時間的或許就是那個圓柱體了。我一直在思考怎樣去表達圓弧的樣子,但是沒有用到更厲害的函式好像就做不太出來。最後我只能用顏色的深淺來分辨,這樣做就不太逼真;(
心得與討論:
這是我第一次用OpenGl,感覺真的很陌生又新鮮,陌生的是對他的語法完全不熟,新鮮的是,能夠用文字寫出一幅圖畫真的很有成就感!
這次的2D讓我認識了OpenGl一些基本的使用,雖然只是基本,但已經花掉我不少頭腦了哈哈!我覺得最困難的部分是座標的判斷、比例、以及顏色的調整,我畫到後來都是用小畫家來找座標。
相信學到最後,再回頭來看今天的作業,應該會很簡單吧!畢竟學到後面已經是3D的動畫了!很期待接下來的課程!
