• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-145  評論-173  文章-70  trackbacks-0
             1#include <GL/glut.h>
             2#include <math.h>
             3const int n = 200;
             4const GLfloat R = 0.5f;
             5const GLfloat Pi = 3.1415926536f;
             6
             7void myDisplay(void)
             8{
             9    int i;
            10    glClear(GL_COLOR_BUFFER_BIT);
            11    glBegin(GL_POLYGON);
            12    for(i=0; i<n; ++i)
            13        glVertex2f(R*cos(2*Pi/n*i), R*sin(2*Pi/n*i));
            14    glEnd();
            15    glFlush();
            16}

            17
            18
            19
            20int main(int argc, char *argv[])
            21{
            22    glutInit(&argc, argv);
            23    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
            24    glutInitWindowPosition(200200);
            25    glutInitWindowSize(500500);
            26    glutCreateWindow("第一個OpenGL程序");
            27    glutDisplayFunc(&myDisplay);
            28    glutMainLoop();
            29    return 0;
            30}

            31

            先來看看上面的代碼,本程序是在win32 console application,即控制臺程序,所以會出現命令行對話框。現在的問題是,這個程序的各個部分到底是什么意思。
            那么,我就逐個來講述吧。
            首先從main函數入口進入,其中main函數的兩個參數就是命令行形參,然后對于#include <GL/glut.h>,這個是包括的一個glut的頭文件,里面定義了很多函數,在運行該程序之前,需要將VC中的相關環境設置好。這里略說。
            看看第一個函數,從glutInit可以看到就是一個初始化,不錯,這個函數的作用就是初始化窗口背景,對于一個程序,在開始運行的時候的初始化工作的重要性,可想而知了,必要而且必須!
            1.繪制圖形的步驟。所有的圖形都應該在glBegin()和glEnd()中繪制,否則

            會默認為為沒有繪制的。
            glBegin(GL_LINES);
             glVertex2f(0.0f, 0.0f);
             glVertex2f(2.0f,8.0f);
            glEnd();

            其次,glBegin()函數的模式,可以選擇

            GL_POINTS,GL_LINES,GL_POLYGON,GL_LINE_LOOP
            對于各種模式的說明:
            GL_POINTS:繪制的是點,也就是單個的點,這樣顯示的時候不會看到。
            GL_LINES:繪制的是一條直線,注意點的坐標一定要在繪制的范圍內,否

            則的話會看不到的,我曾經做過,沒有顯示,還以為錯了……
            GL_POLYGON:顯示的是一個多邊形,比如在其中繪制了三個點,那么以

            這種模式顯示的話就是一個填充的三角形,為何,因為相當于連接這三個點

            形成一個多邊形的來填充。
            GL_LINE_LOOP:繪制出來的點將做到首尾相連,試想,如果不是用的這個

            而是直接用line的話,那么就要手動連接,即在最后一個點的是很放一個首

            節點連起來。
            GL_LINE_STRIP:連起來的是一整條的。區別:與line不同,連接的是line

            的話中間有間隔點就不會連起來,而用這個的話會把相鄰的點連起來。

            2.坐標為原點的在正中間。畫出來的,看的。
            3.畫出來的圖形是一樣:
            void myDisplay(void)
            {
             GLfloat x;
             int i;
             glClear(GL_COLOR_BUFFER_BIT);
             glBegin(GL_LINES);
              glVertex2f(0.0f, 0.0f);
              glVertex2f(-0.123f,-0.423f);
              glVertex2f(0.53f, 0.98f);
              glVertex2f(0.0f, 0.0f);
              glVertex2f(-0.123f,-0.423f);
              glVertex2f(0.53f, 0.98f);
             glEnd();
             glFlush();
            }
            繪制順序的是每兩個點就做出來一條直線。
            void myDisplay(void)
            {
             GLfloat x;
             int i;
             glClear(GL_COLOR_BUFFER_BIT);
             glBegin(GL_LINE_LOOP);
              glVertex2f(0.0f, 0.0f);
              glVertex2f(-0.123f,-0.423f);
              glVertex2f(0.53f, 0.98f);
             glEnd();
             glFlush();
            }
            繪制的時候就是對于這三個點首尾相連。繪制的時候對于各個點依次聯系,

            然后依次連起來,并最終結尾首尾,不管有幾個點。

            4. glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE)
            初始化顯示的模式,第一個參數顯示的是以RGB模式,后者是指單緩沖區。
            詳細的后面學習中再遇到。
            glutInitWindowPosition(200, 200); //初始化窗口的位置,一個點的坐


            glutInitWindowSize(500, 500);  //窗口的大小,長和寬
            glutCreateWindow("第一個OpenGL程序");//窗口的名字,title。

            5.調用相關的函數實現繪制,特別是對于一個繪制,用的是函數,調用下面

            的是傳遞一個指針。
            glutDisplayFunc(&myDisplay);
            glutMainLoop();

            久久久久国产精品嫩草影院| 大伊人青草狠狠久久| 精品免费久久久久久久| 精品少妇人妻av无码久久| 99国产欧美精品久久久蜜芽| 久久久久噜噜噜亚洲熟女综合| 久久精品国产亚洲AV蜜臀色欲 | 人人狠狠综合久久亚洲88| 精品午夜久久福利大片| 久久久久综合国产欧美一区二区| 国产精品久久新婚兰兰| 国产精品久久久久久久久| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区| 久久国产亚洲精品| 久久91精品综合国产首页| 色婷婷久久综合中文久久蜜桃av| 国产激情久久久久影院老熟女免费 | 久久精品无码一区二区日韩AV| 欧美精品九九99久久在观看| 亚洲午夜久久久精品影院| 伊人久久大香线蕉av不卡| 欧美久久一级内射wwwwww.| 亚洲国产精品一区二区久久| 久久精品九九亚洲精品| 香蕉久久永久视频| 一日本道伊人久久综合影| 久久精品国产69国产精品亚洲| 久久久久99精品成人片试看| 青青草原综合久久大伊人| 欧美一级久久久久久久大| 久久精品国产99久久丝袜| 精品久久久久久无码中文野结衣 | 欧美噜噜久久久XXX| 久久精品卫校国产小美女| 久久久无码精品亚洲日韩软件| 国产精品狼人久久久久影院| 青青青伊人色综合久久| 久久国产成人午夜aⅴ影院| 国内精品免费久久影院| 亚洲国产成人乱码精品女人久久久不卡 | 久久久久无码国产精品不卡|