2021年3月8日 星期一

吉親摳ㄎㄎ - Week03

電腦圖學

WEEK03

一個禮拜沒有上電腦圖學,放假放到忘惹:))希望今天可以找回記憶!但是有點收家症候群阿

本日任務一複習上次教的東西Copy重要的程式碼: 

    開啟OpenGL專案(會旋轉的三角形) 

     1.CodeBlocks 開起來

    2.File-new-Project ,選OpenGL專案  (最下面的上面)

    3.Pjoject名字是 week03-1

    4.儲存位置選桌面

    5.下下下

    6.把第86到92行程式碼copy下來

 程式碼:

         glBegin(GL_TRIANGLES);  ///開始

                glColor3f(1.0f, 0.0f, 0.0f);   glVertex2f(0.0f,   1.0f);  //顏色 頂點

                glColor3f(0.0f, 1.0f, 0.0f);   glVertex2f(0.87f,  -0.5f);

                glColor3f(0.0f, 0.0f, 1.0f);   glVertex2f(-0.87f, -0.5f);

        glEnd();  ///結束

偷程式碼

    開啟GLUT專案

     1. File-New-Projct, 選 GLUT 專案 (最上面的下面)

    2 下載 freeglut ,解壓縮到桌面,OK

    3. C:\Users\你\桌面\freeglut\lib ,把libfreeglut.a =copy=> libglut32.a

    4. 記得 GLUT目錄 C:\....\Desktop\freeglut

    刪除部分程式碼留下精華

    程式碼:
    #include <GL/freeglut.h> ///使用GLUT外掛
    static void display(void)
    {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      
        glutSwapBuffers();
    }

    int main(int argc, char *argv[]) ///只留重要的五行
    {
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
        glutCreateWindow("GLUT Shapes");
        glutDisplayFunc(display);
        glutMainLoop();
    }

接下來合併偷來的程式碼

#include <GL/freeglut.h> ///使用GLUT外掛
static void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
          glBegin(GL_TRIANGLES);  ///開始
                glColor3f(1.0f, 0.0f, 0.0f);   glVertex2f(0.0f,   1.0f);  //顏色 頂點
                glColor3f(0.0f, 1.0f, 0.0f);   glVertex2f(0.87f,  -0.5f);
                glColor3f(0.0f, 0.0f, 1.0f);   glVertex2f(-0.87f, -0.5f);
        glEnd();  ///結束
    glutSwapBuffers();
}

int main(int argc, char *argv[]) ///只留重要的五行
{
    glutInit(&argc, argv); ///設定GLUT的初始化
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); ///顯示模式 
    glutCreateWindow("GLUT Shapes"); ///開GLUT視窗
    glutDisplayFunc(display); ///顯示的函式 跟上面函式做呼應

    glutMainLoop(); ///GLUT主要迴圈,卡住不要結束
}

接下來因為用偷的不好,所以從頭自己來做一遍茶壺!!

程式碼:
#include <GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  ///清空
    glutSolidTeapot(0.3);   ///實心茶壺

    glutSwapBuffers();  ///交換兩倍的Buffers
}
int main(int argc,char **argv)  /// 以前是int main()
{
    glutInit(&argc,argv);   ///1.初始設定
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);   ///2.顯示模式
    glutCreateWindow("08160971 奶最大的妹子");   ///3.開視窗

    glutDisplayFunc(display);   ///4.等一下要顯示的函式

    glutMainLoop();  ///5.主要迴圈
}

了解argc argv

程式碼:
#include <stdio.h>
int main(int argc ,char**argv)
{
    printf("現在的argc是:%d\n",argc);
    for(int i=0;i<argc;i++){
        printf("argv[%d]是:%s\n",i,argv[i]);
    }
}

                              !!有多個專案時 記得要把左邊案右鍵點選active project 變粗黑色!!

最後學習畫出統神端火鍋的圍巾吧~~

#include <GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
///清空
    glColor3ub(181,212,148); //顏色
    glBegin(GL_TRIANGLES);
        glVertex2f((149-150)/150/0, -(116-150)/150.0);
        glVertex2f((189-150)/150/0, -(116-150)/150.0);
        glVertex2f((176-150)/150/0, -(144-150)/150.0);  //座標化
    glEnd();
    glutSwapBuffers();  ///交換兩倍的Buffers
}
int main(int argc,char **argv)  /// 以前是int main()
{
    glutInit(&argc,argv);   ///1.初始設定
    glutInitDisplayMode(GLUT_DOUBLE |GLUT_DEPTH);   ///2.顯示模式
    glutCreateWindow("08160971 奶最大的妹子");   ///3.開視窗
    glutDisplayFunc(display);   ///4.等一下要顯示的函式
    glutMainLoop();  ///5.主要迴圈
}

接下來就是加課的課程,來學習一點點的github,以後可以把程式碼丟上來就不用重新打惹:)

那今天就結束這一回合開心回家囉~~下禮拜見


補充:GL_POLYGON多邊形 GL_QUADS 四邊形


 

沒有留言:

張貼留言

Week18期末作業(橘貓的跳舞熊熊)

 期末作業(橘貓的跳舞熊熊) 影片: https://youtu.be/R89tptMaQZw 程式碼: #include <opencv/highgui.h> #include <opencv/cv.h> #include <GL/glut.h...