2021年3月8日 星期一

橘貓(電圖小筆記)_week03

早安各位朋友

今天這篇文章是接續上一篇→(OpenGL紅色甜甜圈)

做好上一篇的設定之後我們會得到以下的圖型



要把這個程式簡化
我們來看程式碼


首先,先解釋這裡使用的外掛

如果是使用蘋果電腦的話使用
    #ifdef __APPLE__(蘋果電腦)
    #include <GLUT/glut.h>(使用GLUT外掛)
    #esle(是其他電腦)
如果是使用windows電腦的話使用
    #include <GL/glut.h>(使用GLUT外掛)
    #endif(結束)
最後
#include <stdlib.h>(一般經常使用的外掛)

再來解釋下列函式用途
  1. static void resize(int width, int height)(圖形大小)
  2. static void display(void)(圖形的各種設定)
  3. static void key(unsigned char key, int x, int y)(下指令)
  4. static void idle(void)(閒置時動作)
  5. int main(int argc, char *argv[])(圖形的各種設定)
接下來讓我們來改造程式碼吧
首先我們只需留下這兩個函示
  1. static void display(void)(圖形的各種設定)
  2. int main(int argc, char *argv[])(圖形的各種設定)
清理完會像這樣

最後將兩個函室內清空,留下我們需要的程式

像這樣~
會得到一個不會旋轉的三角形(橘色線條稍後解釋)


來解釋一下簡單程式碼的用途

static void display(void)

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    為了不留下殘影(初始化顏色|圖形)

            glBegin(GL_TRIANGLES);(開始openGL中內建的圖型)(三角形)

            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);

            上三行的1.glColor3f表示顏色;3f表示有三個參數

                     其中(1.0f),的f代表浮點數1.0代表方位

                   2.glVertex2f表示點的位置;2f表示有2個參數(因為是2D)

                     其中(0.0f),的f代表浮點數(0.0f)代表位置

            glEnd();(結束openGL)

    glutSwapBuffers();呼叫後面的GLUT_DOUBLE

}

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主要的迴圈,讓畫面停留)

}

再來使用這個程式碼來引用內建的圖形
這個是teapot的圖形

基本上都跟剛剛解釋的程式碼相同

要在static void display(void)中加入glutSolidTeapot(0.3);

茶壺就結束了!

這裡是一個額外計算參數控制的程式

#include <stdlib.h>

int main(int argc, char *argv[])

{

    printf("現在的 argc是:%d\n",argc);

    for(int i=0;i<argc;i++){

        printf("argc是:[%d]是:%s\n",i,argv[i]);

    }

}

按下執行之後還要開啟cmd系統管理員去呼叫應用程式,接著直接在應用程式後輸入字串就可以計算有幾個參數了.


沒有留言:

張貼留言

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

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