上週2/28放假,今天是第三週
這次會用到新的資料。先去 https://jsyeh.org/3dcg10/下載win32.zip (實際名稱為windows.zip)然後解壓縮
打開windows資料夾。裡面有這次上課會講到的東西。
按住任一綠色的數字不放,往上或往下移動即可調整數值。
在畫圖區域內按一下右鍵,選擇Toggle big verticles可讓頂點變得更大。
在程式碼區域內按一下右鍵,可以選擇其他範例(單獨點,三角形等)。
圖A為lines[p]
圖B為points[p]
仔細看得話可以發現每兩行就可以畫出一個點:
選顏色>選座標>畫下去
一直循環下去…
了解原理後,就可以來畫圖形了。
但在這之前,得先來個畫布吧?否則你現在看到的這些東西也不會存在了。
新增一個OpenGL專案,將main.cpp的程式碼全刪掉,換成以下的:
#include <GL/glut.h>
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit( &argc, argv);
glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03_1");
glutDisplayFunc( display );
glutMainLoop();
return 0;
}
完成後執行程式(齒輪+播放),一張畫布就完成了。
當然,這裡什麼都沒有。
來個茶壺怎麼樣?把這些加進去void display()裡面。
再按一次執行程式(齒輪+播放),一個紅色的等腰直角三角形就完成了。
glColor3f(1,1,0); ///紅+綠=黃
glutSolidTeapot(0.3); ///大小=0.3
#include <GL/glut.h>
void display()
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(1,1,0);
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit( &argc, argv);
glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week03_1");
glutDisplayFunc( display );
glutMainLoop();
return 0;
}
再按一次執行程式(齒輪+播放),一個黃色的茶壺就完成了。
改變數值,可以讓茶壺有不一樣的外觀!
接著來畫一個三角形。程式碼跟Shapes.exe裡的很像。
刪除以下的:
glColor3f(1,1,0);
glutSolidTeapot(0.3);
替換成:
glBegin(GL_TRIANGLES);///單色
glColor3f(1,0,0); ///紅色
glVertex2f(0.0f,1.0f);
glVertex2f(1.0f,1.0f);
glVertex2f(1.0f,0.0f);
glEnd();
或者是:
glBegin(GL_TRIANGLES);///彩色
glColor3f(1,0,0); glVertex2f(0.0f,1.0f);///紅色
glColor3f(0,1,0); glVertex2f(1.0f,1.0f);///綠色
glColor3f(0,0,1); glVertex2f(1.0f,0.0f);///藍色
glEnd();
彩色的等腰直角三角形會有漸層。
順便一提,glVertex2f(0.0f,1.0f);裡的f,是以整個視窗為基準。
例如:
0.0f,0.0f=中心
1.0f,0.0f=右邊
1.0f,1.0f=右上
依此類推...
所以對視窗進行縮放的話,圖案也會變不一樣! (以下是等腰直角三角形變成直角三角形)
沒有留言:
張貼留言