• <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  評(píng)論-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("第一個(gè)OpenGL程序");
            27    glutDisplayFunc(&myDisplay);
            28    glutMainLoop();
            29    return 0;
            30}

            31

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

            會(huì)默認(rèn)為為沒(méi)有繪制的。
            glBegin(GL_LINES);
             glVertex2f(0.0f, 0.0f);
             glVertex2f(2.0f,8.0f);
            glEnd();

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

            GL_POINTS,GL_LINES,GL_POLYGON,GL_LINE_LOOP
            對(duì)于各種模式的說(shuō)明:
            GL_POINTS:繪制的是點(diǎn),也就是單個(gè)的點(diǎn),這樣顯示的時(shí)候不會(huì)看到。
            GL_LINES:繪制的是一條直線(xiàn),注意點(diǎn)的坐標(biāo)一定要在繪制的范圍內(nèi),否

            則的話(huà)會(huì)看不到的,我曾經(jīng)做過(guò),沒(méi)有顯示,還以為錯(cuò)了……
            GL_POLYGON:顯示的是一個(gè)多邊形,比如在其中繪制了三個(gè)點(diǎn),那么以

            這種模式顯示的話(huà)就是一個(gè)填充的三角形,為何,因?yàn)橄喈?dāng)于連接這三個(gè)點(diǎn)

            形成一個(gè)多邊形的來(lái)填充。
            GL_LINE_LOOP:繪制出來(lái)的點(diǎn)將做到首尾相連,試想,如果不是用的這個(gè)

            而是直接用line的話(huà),那么就要手動(dòng)連接,即在最后一個(gè)點(diǎn)的是很放一個(gè)首

            節(jié)點(diǎn)連起來(lái)。
            GL_LINE_STRIP:連起來(lái)的是一整條的。區(qū)別:與line不同,連接的是line

            的話(huà)中間有間隔點(diǎn)就不會(huì)連起來(lái),而用這個(gè)的話(huà)會(huì)把相鄰的點(diǎn)連起來(lái)。

            2.坐標(biāo)為原點(diǎn)的在正中間。畫(huà)出來(lái)的,看的。
            3.畫(huà)出來(lái)的圖形是一樣:
            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();
            }
            繪制順序的是每?jī)蓚€(gè)點(diǎn)就做出來(lái)一條直線(xiàn)。
            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();
            }
            繪制的時(shí)候就是對(duì)于這三個(gè)點(diǎn)首尾相連。繪制的時(shí)候?qū)τ诟鱾€(gè)點(diǎn)依次聯(lián)系,

            然后依次連起來(lái),并最終結(jié)尾首尾,不管有幾個(gè)點(diǎn)。

            4. glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE)
            初始化顯示的模式,第一個(gè)參數(shù)顯示的是以RGB模式,后者是指單緩沖區(qū)。
            詳細(xì)的后面學(xué)習(xí)中再遇到。
            glutInitWindowPosition(200, 200); //初始化窗口的位置,一個(gè)點(diǎn)的坐

            標(biāo)
            glutInitWindowSize(500, 500);  //窗口的大小,長(zhǎng)和寬
            glutCreateWindow("第一個(gè)OpenGL程序");//窗口的名字,title。

            5.調(diào)用相關(guān)的函數(shù)實(shí)現(xiàn)繪制,特別是對(duì)于一個(gè)繪制,用的是函數(shù),調(diào)用下面

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

            posted on 2009-09-27 23:56 deercoder 閱讀(1768) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): OpenCV / OpenGL
            99久久精品免费| 成人综合伊人五月婷久久| 久久久久国产一区二区三区| 爱做久久久久久| 中文成人无码精品久久久不卡| 色妞色综合久久夜夜| 一本一道久久精品综合| 四虎影视久久久免费观看| 久久777国产线看观看精品| 人人狠狠综合久久亚洲| 精品午夜久久福利大片| 亚洲精品美女久久777777| 久久久久国产亚洲AV麻豆| 99精品国产在热久久无毒不卡| 性做久久久久久久久久久| 国产精品久久久久久一区二区三区| 亚洲AV伊人久久青青草原| 久久精品国产只有精品2020| 97久久婷婷五月综合色d啪蜜芽| 久久午夜综合久久| 一本大道加勒比久久综合| 国产国产成人精品久久| 色综合久久综合中文综合网| 久久久这里有精品| 久久九九久精品国产免费直播| 成人综合伊人五月婷久久| 无码久久精品国产亚洲Av影片| 2021久久精品免费观看| 亚洲国产成人精品女人久久久 | 久久婷婷是五月综合色狠狠| 久久精品国产亚洲欧美| 久久99国产精品久久| 97久久超碰成人精品网站| 久久久久久人妻无码| 亚洲国产精品无码久久SM| 久久天天躁狠狠躁夜夜avapp| 青青久久精品国产免费看| 色综合久久中文字幕综合网| 日本欧美国产精品第一页久久| 精品无码久久久久久久久久| 久久精品国产福利国产琪琪|