Week02
開啟上周第二個程式
點開 freeglut 的壓縮檔
拉到桌面上
把 桌面\freeglut\lib 目錄裡的 libfreeglut.a 複製成 libglut32.a
打開CodeBlocks, File-New-Project
選 GLUT專案
專案名: week02-1_GLUT
把 GLUT 的目錄, 設成 桌面的 freeglut 就可以執行
做出小茶壺
week02-1
void display(){
glutSolidTeapot(0.3);
glutSwapBuffers();
}
int main(int argc, char *argv[]){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("GLUT Shapes");
glutDisplayFunc(display);
glutMainLoop();
}
畫出兩個重疊的茶壺
week02-2
*glColor3f(r, g, b);是要幫物體上色
glutSolidTeapot(0.5);顯示出半徑0.5的茶壺
glutSolidTeapot(0.3);顯示出半徑0.3的茶壺
#include <GL/glut.h>
void display(){
glColor3f(2,2,0);
glutSolidTeapot(0.5);
glColor3f(0,2,2);
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();
}
使用三個頂點畫出一個三角形在茶壺的背後
week02-3
*glBegin(GL_POLYGON);開始畫
glVertex2f(0,1);頂點
glVertex2f(0,1);頂點
glEnd();結束畫
#include <GL/glut.h>
void display(){
glColor3f(0,1,0);
glBegin(GL_POLYGON);
glVertex2f(0,1);
glVertex2f(-1,-1);
glVertex2f(+1,-1);
glEnd();
glColor3f(1,1,0);
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();
}
將背景的三角形變成彩色的
*glColor3f(1,0,0); glVertex2f(0,1);讓每個頂點的顏色都不同
頂點要在1和-1間
#include <GL/glut.h>
void display(){
///glColor3f(0,1,0);
glBegin(GL_POLYGON);
glColor3f(1,0,0); glVertex2f(0,1);
glColor3f(0,1,0); glVertex2f(-1,-1);
glColor3f(0,0,1); glVertex2f(+1,-1);
glEnd();
glColor3f(1,1,0);
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();
}
畫出五個不同顏色的圓形
week02-5
*使用小畫家
用cos、sin 畫出圓形
#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.1415926; a+=0.01){
glVertex2f(r*cos(a)+x, r*sin(a)+y);
}
glEnd();
}
void display(){
glColor3f(233/255.0, 141/255.0, 128/255.0);
myCircle(0.5, 0, 0);
glColor3f(1,1,0);
myCircle(0.3, 0.5, 0.5);
glColor3f(1,0,0);
myCircle(0.3, -0.5, 0.5);
glColor3f(0,1,0);
myCircle(0.3, -0.5, -0.5);
glColor3f(0,0,1);
myCircle(0.3, 0.5, -0.5);
glutSwapBuffers();
}
int main(int argc, char *argv[]){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week02");
glutDisplayFunc(display);
glutMainLoop();
}





沒有留言:
張貼留言