2023年2月23日 星期四

於 week02

Week02

開啟上周第二個程式

點開 freeglut 的壓縮檔

拉到桌面上

把 桌面\freeglut\lib  目錄裡的 libfreeglut.a 複製成 libglut32.a

打開CodeBlocks, File-New-Project

選 GLUT專案

專案名: week02-1_GLUT

把 GLUT 的目錄, 設成 桌面的 freeglut 就可以執行


做出小茶壺

week02-1


#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("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);頂點
  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();
}




將背景的三角形變成彩色的


week02-4

*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();
}












沒有留言:

張貼留言