1.下載課本範例https://jsyeh.org/3dcg10/
2.window.zip解壓縮
3.data.zip解壓縮
5.左邊的mouse右鍵,可以切換大頂點、多一點顏色
6.右邊的mouse右鍵,可以切換點、線、面
7.右邊的mouse左鍵,按住綠色數字、可以上下拖拽數字大小
1.左邊設成多一點顏色toogle colors at vertices
2.左邊切換成TRIANGLES
3.每個頂點,都可以有自己的色彩
0.先把freeglut下載並且複製到桌面,再把freeglut\lib\libfreeglut.a複製成libglut32.a
1.File-New-Project,glut專案,week02_glut_color_teatop,小心點點點,要選桌面
2.上週10行直接拿來用
3.再加上一行 glColor3f(1,1,0);
用小畫家,來挑選我們需要的顏色
1.開啟小畫家,把你要畫的圖,貼進去
2.利用滴管來吸色,再用編輯色彩來看他的數字
3.程式裡glColor3f(r,g,b); 是0.0~1.0中間,所以我們就把吸到的顏色/255.0就可以了。
4.ex. glColor3f(247/255.0,180/255.0,171/255.0);
5.我們來畫兩個茶壺,先畫大的再畫小的,不同色彩
1.File-New-Project,Glut專案,Week02_glut_color_triangle
2.貼上week02_glut_color_teatop程式碼
3.修改程式碼
#include <GL/glut.h>///第18行存下來
void display()
{
glBegin(GL_POLYGON);
glColor3f(1,0,0);glVertex2f(0,1);
glColor3f(0,1,0);glVertex2f(+1,-0.6);
glColor3f(1,0,0);glVertex2f(-1,-0.6);
glEnd();
glutSwapBuffers();
}
int main(int argc, char*argv[])///第138行,main()函式
{
glutInit(&argc, argv);///140行, 開啟GLUT功能
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///148行,設定顯示模式
glutCreateWindow("GLUT Shapes");///145行,開一個
glutDisplayFunc(display);///148行,要用display()函式來畫圖
glutMainLoop();///174行, 主要的迴圈,在這裡一直運作,不結束
}
用小畫家,幫我們找到頂點座標
1.File-New-Project,Glut專案week02_glut_glVertex_mspaint
2.開一個小畫家,把一張圖放進來。建議400*400
3.口訣:減一半、除一半、Y加負號
#include <GL/glut.h>///第18行存下來
void display()
{
glBegin(GL_POLYGON);
glVertex2f((34-200)/200.0,-(76-200)/200.0);
glVertex2f((50-200)/200.0,-(131-200)/200.0);
glVertex2f((85-200)/200.0,-(59-200)/200.0);
glEnd();
glBegin(GL_POLYGON);
glVertex2f((383-200)/200.0,-(79-200)/200.0);
glVertex2f((348-200)/200.0,-(146-200)/200.0);
glVertex2f((312-200)/200.0,-(55-200)/200.0);
glEnd();
glutSwapBuffers();
}
int main(int argc, char*argv[])///第138行,main()函式
{
glutInit(&argc, argv);///140行, 開啟GLUT功能
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///148行,設定顯示模式
glutCreateWindow("GLUT Shapes");///145行,開一個
glutDisplayFunc(display);///148行,要用display()函式來畫圖
glutMainLoop();///174行, 主要的迴圈,在這裡一直運作,不結束
}
如何畫圓
1.File-New-Project,Glut專案week02_glut_cos_sin_circle
2.寫程式碼
#include <GL/glut.h>///第18行存下來
#include <math.h>
void display()
{
glBegin(GL_POLYGON);
for(float a=0;a<=3.1415*2;a+=0.1){
glVertex2f(cos(a),sin(a));
}
glEnd();
glutSwapBuffers();
}
int main(int argc, char*argv[])///第138行,main()函式
{
glutInit(&argc, argv);///140行, 開啟GLUT功能
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///148行,設定顯示模式
glutCreateWindow("GLUT Shapes");///145行,開一個
glutDisplayFunc(display);///148行,要用display()函式來畫圖
glutMainLoop();///174行, 主要的迴圈,在這裡一直運作,不結束
}
如何移動圓
1.紅色為修改圖形半徑
2.橘色為同型x軸移動方向
3.綠色為同型y軸移動方向
如何畫米奇
1.修改程式
#include <GL/glut.h>///第18行存下來
#include <math.h>
void myCircle(float x,float y,float r){
glBegin(GL_POLYGON);
for(float a=0;a<=3.1415*2;a+=0.1){
glVertex2f(r*cos(a)+x,r*sin(a)+y);
}
glEnd();
}
void display()
{
myCircle(0.5,0.5,0.3);
myCircle(-0.5,0.5,0.3);
myCircle(0,-0.1,0.6);
glutSwapBuffers();
}
int main(int argc, char*argv[])///第138行,main()函式
{
glutInit(&argc, argv);///140行, 開啟GLUT功能
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);///148行,設定顯示模式
glutCreateWindow("GLUT Shapes");///145行,開一個
glutDisplayFunc(display);///148行,要用display()函式來畫圖
glutMainLoop();///174行, 主要的迴圈,在這裡一直運作,不結束
}
沒有留言:
張貼留言