• <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>
            隨筆-38  評(píng)論-23  文章-0  trackbacks-0

            nehe教程里頭,該課的內(nèi)容是利用多邊形來(lái)組成三維圖形.我只實(shí)現(xiàn)了一個(gè)利用三角形繪制四面體,而其中的正方體則是采用glut工具庫(kù)自帶的函數(shù)繪制的

            #include 
            "openglglut.h"

            /*
            **  使用四個(gè)三角形繪制成一個(gè)四面體,繞Y軸旋轉(zhuǎn)
            **  使用glut工具庫(kù)繪制一個(gè)灰色正方體,繞XYZ軸旋轉(zhuǎn)
            **  nehe教程里頭是采用繪制正方體的6個(gè)面來(lái)繪制正方體的.
            *
            */

            GLfloat yRot
            =0;                                 /** 四面體繞Y軸旋轉(zhuǎn)角度*/
            GLfloat xRot
            =0;                                 /** 正方體繞xyz軸旋轉(zhuǎn)角度*/
            int main(int argc,char** argv)
            {
                createWindow(
            "opengl lesson_5",&argc,argv); /** 初始化并創(chuàng)建窗口*/

                glutDisplayFunc(glutDisplay);               
            /** 注冊(cè)重繪函數(shù)*/
                glutIdleFunc(glutIdle);                     
            /** 注冊(cè)空閑回調(diào)函數(shù)*/
                glutReshapeFunc(glutResize);                
            /** 注冊(cè)窗口調(diào)整函數(shù)*/
                glutSpecialFunc(glutSpecial);               
            /** 注冊(cè)特殊按鍵窗口*/
                glutKeyboardFunc(glutKeyboard);             
            /** 注冊(cè)鍵盤(pán)處理函數(shù)*/

                InitOpenGL();                               
            /** 初始化opengl*/

                glutMainLoop();                             
            /** 仿真循環(huán)*/
            }

            void glutDisplay(void)                          /** 重繪函數(shù)*/
            {
                glClear(GL_COLOR_BUFFER_BIT 
            | GL_DEPTH_BUFFER_BIT);/** 清除顏色緩存和深度緩存*/
                
                glLoadIdentity();                           
            /** 初始化當(dāng)前矩陣為單位矩陣*/

                glPushMatrix();                             
            /** 保存當(dāng)前矩陣*/
                glTranslatef(
            -1.5,0.0,-6.0);                /** 往左移動(dòng)和往屏幕內(nèi)部移動(dòng),繪制四面體*/
                glRotatef(yRot,
            0.0,1.0,0.0);                /** 四面體繞y軸旋轉(zhuǎn)yRot角度*/
                
                glBegin(GL_TRIANGLES);                      
            /** 通過(guò)繪制四個(gè)三角形組成四面體*/
                    glColor3f(
            1.0f,0.0f,0.0f);              /** 紅色*/
                    glVertex3f( 
            0.0f1.0f0.0f);          /** 三角形的上頂點(diǎn) (前側(cè)面)*/
                    glColor3f(
            0.0f,1.0f,0.0f);              /** 綠色*/
                    glVertex3f(
            -1.0f,-1.0f1.0f);          /** 三角形的左下頂點(diǎn) (前側(cè)面)*/
                    glColor3f(
            0.0f,0.0f,1.0f);              /** 藍(lán)色*/
                    glVertex3f( 
            1.0f,-1.0f1.0f);          /** 三角形的右下頂點(diǎn) (前側(cè)面)*/

                    glColor3f(
            1.0f,0.0f,0.0f);                /**紅色*/
                    glVertex3f( 
            0.0f1.0f0.0f);            /**三角形的上頂點(diǎn) (右側(cè)面)*/
                    glColor3f(
            0.0f,0.0f,1.0f);              /**  藍(lán)色 */
                    glVertex3f( 
            1.0f,-1.0f1.0f);          /** 三角形的左下頂點(diǎn) (右側(cè)面)*/
                    glColor3f(
            0.0f,1.0f,0.0f);              /** 綠色*/
                    glVertex3f( 
            1.0f,-1.0f-1.0f);         /** 三角形的右下頂點(diǎn) (右側(cè)面)*/

                    glColor3f(
            1.0f,0.0f,0.0f);              /** 紅色*/
                    glVertex3f( 
            0.0f1.0f0.0f);          /** 三角形的上頂點(diǎn) (后側(cè)面)*/
                    glColor3f(
            0.0f,1.0f,0.0f);              /** 綠色*/
                    glVertex3f( 
            1.0f,-1.0f-1.0f);         /** 三角形的左下頂點(diǎn) (后側(cè)面)*/
                    glColor3f(
            0.0f,0.0f,1.0f);              /** 藍(lán)色*/
                    glVertex3f(
            -1.0f,-1.0f-1.0f);         /** 三角形的右下頂點(diǎn) (后側(cè)面)*/

                    glColor3f(
            1.0f,0.0f,0.0f);              /** 紅色*/
                    glVertex3f( 
            0.0f1.0f0.0f);          /** 三角形的上頂點(diǎn) (左側(cè)面)*/
                    glColor3f(
            0.0f,0.0f,1.0f);              /** 藍(lán)色*/
                    glVertex3f(
            -1.0f,-1.0f,-1.0f);          /** 三角形的左下頂點(diǎn) (左側(cè)面)*/
                    glColor3f(
            0.0f,1.0f,0.0f);                /** 綠色*/
                    glVertex3f(
            -1.0f,-1.0f1.0f);            /**三角形的右下頂點(diǎn) (左側(cè)面)*/
                glEnd();                                    
            /**  四面體繪制結(jié)束*/
                
                glPopMatrix();                              
            /** 恢復(fù)當(dāng)前矩陣為保持前*/

                glTranslatef(
            1.5,0.0,-6.0);                 /** 往右移動(dòng)和往屏幕內(nèi)部移動(dòng),繪制正方體*/
                glRotatef(xRot,
            1.0,1.0,1.0);                /** 正方體繞XYZ軸旋轉(zhuǎn)*/ 

                glColor3f(
            0.5,0.5,0.5);                     /** 鑒于glut中提供了正方體的繪制*/
                glutSolidCube(
            1.732);                       /** 故使用glut中方法繪制正方體*/

                glutSwapBuffers();

            }

            void glutIdle(void)                             /** 回調(diào)函數(shù)*/
            {
                yRot
            +=0.5;                                  /** 繞y軸旋轉(zhuǎn)角度遞增*/
                xRot
            -=0.5;                                  /** 繞x軸旋轉(zhuǎn)角度遞減*/
                glutPostRedisplay();                        
            /** 使得函數(shù)完成后進(jìn)行窗口重繪*/
            }


            void glutKeyboard(unsigned char key,int x,int y)
            {
                
            switch(key)
                
            {
                    
            case 27:                                /** Esc按鍵按下后退出程序 */
                        exit(
            0);
                        
            break;
                    
            default:
                        
            break;
                }

            }

            最終顯示結(jié)果是:


            末尾總結(jié):
            opengl當(dāng)中,復(fù)雜的圖形總是通過(guò)最基本的圖元組成,當(dāng)然繪制起來(lái)也不見(jiàn)得會(huì)非常的簡(jiǎn)單.通常很多復(fù)雜的模型等大多數(shù)是通過(guò)建模軟件生成的.
            這節(jié)課當(dāng)中,并沒(méi)有多大的內(nèi)容,基本用到都是之前l(fā)esson當(dāng)中學(xué)習(xí)過(guò)的.
            posted on 2009-07-17 18:24 米游 閱讀(555) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): OpenGL/OSG
            色诱久久av| 婷婷综合久久中文字幕| 欧美日韩精品久久免费| 亚洲精品午夜国产VA久久成人| 久久久婷婷五月亚洲97号色| 国内精品久久久久| 香蕉99久久国产综合精品宅男自 | 国产精品永久久久久久久久久| 久久99精品国产麻豆不卡| 久久久免费观成人影院| 久久精品亚洲中文字幕无码麻豆 | 久久久久久噜噜精品免费直播| 伊人久久一区二区三区无码| 久久久久久人妻无码| 欧美精品一区二区久久| MM131亚洲国产美女久久| 亚洲国产天堂久久综合| 91精品国产综合久久婷婷| 国产精品久久久香蕉| www亚洲欲色成人久久精品| 亚洲va中文字幕无码久久| 久久黄视频| 久久青青草原精品影院| 久久久久久久亚洲Av无码| 久久精品国产乱子伦| 亚洲精品乱码久久久久久蜜桃| 久久精品一区二区国产| 亚洲精品午夜国产VA久久成人| 亚洲国产成人久久综合野外| 久久av免费天堂小草播放| 国产69精品久久久久9999| 久久久精品人妻一区二区三区蜜桃 | 亚洲国产精品热久久| 日产精品久久久一区二区| 久久久久久久久波多野高潮| 欧美久久亚洲精品| 久久婷婷五月综合成人D啪| 亚洲欧美日韩精品久久亚洲区 | 亚洲∧v久久久无码精品| 亚洲综合伊人久久综合| 伊人久久大香线蕉亚洲五月天|