week02
*step01:做茶壺
#include <GL/glut.h>
void display()
{
glutSolidTeapot(0.3);
glutSwapBuffers(); //交換顯示
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); //設定顯示模式
glutCreateWindow("week02"); //視窗名稱
glutDisplayFunc(display); //顯示的函式
glutMainLoop(); //主要迴圈最後
}
void display()
{
glutSolidTeapot(0.3);
glutSwapBuffers(); //交換顯示
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); //設定顯示模式
glutCreateWindow("week02"); //視窗名稱
glutDisplayFunc(display); //顯示的函式
glutMainLoop(); //主要迴圈最後
}
*step02:茶壺上色
#include <GL/glut.h>
void display()
{
glColor3f(1,1,1); //選擇顏色
glutSolidTeapot(0.3); //實心茶壺
glColor3f(1,0,0.6); //粉色
glutSolidTeapot(0.2);
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week02");
glutDisplayFunc(display);
glutMainLoop();
}
*step03:加入不同圖形
#include <GL/glut.h>
void display()
{
glColor3f(1,1,1);
glBegin(GL_POLYGON);
glVertex2f(0,1); //上面頂點
glVertex2f(-1,-1); //左下角頂點
glVertex2f(1,-1); //右下角頂點
glEnd();
glColor3f(1,0,0.6);
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week02");
glutDisplayFunc(display);
glutMainLoop();
}
*step04:改變新加入圖形的顏色#include <GL/glut.h>void display(){ glBegin(GL_POLYGON); glColor3f(1,1,1); glVertex2f(0,1); glColor3f(0.5,0,0.5); glVertex2f(-1,-1); glColor3f(0.8,0,0.8); glVertex2f(1,-1); glEnd(); glColor3f(1,0,0.6); glutSolidTeapot(0.3); glutSwapBuffers();}int main(int argc, char *argv[]){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("week02"); glutDisplayFunc(display); glutMainLoop();}
*step05:用小畫家找圖的頂點&圖上的顏色
頂點:開200*200的畫布把找到的圖貼上去,滑鼠移動左下角有像素,左邊為X軸,右邊為Y軸
丟進程式時需先減一半,再除一半,且Y軸須為負 0 ~ 200 => -100 ~ +100 => -1.0 ~ +1.0例: glVertex2f ( (103-100) /100.0 , - (7-100) /100.0 );
顏色:用滴管吸圖上的顏色,再點選編輯色彩,即可看到色碼丟進程式時需除255.0 //不可以超過0 ~ 1例: glColor3f ( 255/255.0 , 128/255.0 , 192/255.0 );
*step06:畫圓
#include <GL/glut.h>#include <math.h>void myCircle(float r, float x, float y){ glBegin(GL_POLYGON); for(float a=0; a<=2*3.141592; a+=0.01) { glVertex2f( r*cos(a)+x, r*sin(a)+y); } glEnd();}void display(){ glColor3f(1,1,1); //大圓 myCircle(0.5,0,0);
glColor3f(1,0,0.5); //左上 myCircle(0.3,-0.4,0.6);
glColor3f(0.8,0,0.8); //右下 myCircle(0.3,0.4,-0.6);
glutSwapBuffers();}int main(int argc, char *argv[]){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutCreateWindow("week02"); glutDisplayFunc(display); glutMainLoop();}
#include <GL/glut.h>
void display()
{
glBegin(GL_POLYGON);
glColor3f(1,1,1); glVertex2f(0,1);
glColor3f(0.5,0,0.5); glVertex2f(-1,-1);
glColor3f(0.8,0,0.8); glVertex2f(1,-1);
glEnd();
glColor3f(1,0,0.6);
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week02");
glutDisplayFunc(display);
glutMainLoop();
}
*step05:用小畫家找圖的頂點&圖上的顏色
頂點:
開200*200的畫布把找到的圖貼上去,滑鼠移動左下角有像素,左邊為X軸,右邊為Y軸
丟進程式時需先減一半,再除一半,且Y軸須為負
0 ~ 200 => -100 ~ +100 => -1.0 ~ +1.0
例: glVertex2f ( (103-100) /100.0 , - (7-100) /100.0 );
顏色:
用滴管吸圖上的顏色,再點選編輯色彩,即可看到色碼
丟進程式時需除255.0 //不可以超過0 ~ 1
例: glColor3f ( 255/255.0 , 128/255.0 , 192/255.0 );
*step06:畫圓
#include <GL/glut.h>
#include <math.h>
void myCircle(float r, float x, float y)
{
glBegin(GL_POLYGON);
for(float a=0; a<=2*3.141592; a+=0.01)
{
glVertex2f( r*cos(a)+x, r*sin(a)+y);
}
glEnd();
}
void display()
{
glColor3f(1,1,1); //大圓
myCircle(0.5,0,0);
glColor3f(1,0,0.5); //左上
myCircle(0.3,-0.4,0.6);
glColor3f(0.8,0,0.8); //右下
myCircle(0.3,0.4,-0.6);
glutSwapBuffers();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week02");
glutDisplayFunc(display);
glutMainLoop();
}
沒有留言:
張貼留言