青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

  C++博客 :: 首頁 :: 聯(lián)系 ::  :: 管理
  163 Posts :: 4 Stories :: 350 Comments :: 0 Trackbacks

常用鏈接

留言簿(48)

我參與的團(tuán)隊(duì)

搜索

  •  

積分與排名

  • 積分 - 401642
  • 排名 - 59

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

二次曲面是一種畫復(fù)合對(duì)象的方法,這種方法通常并不需要很多的三角形。我們將要使用第七課的代碼。我們將要增加7個(gè)變量以及修改紋理以增加一些變化 : 
  

bool    sp;                        // 空格鍵是否按下

int    part1;                        // 圓盤的起始角度
int    part2;                        // 圓盤的結(jié)束角度
int    p1=0;                        // 增量1
int    p2=1;                        // 增量1
GLUquadricObj *quadratic;                    // 二次幾何體
GLuint  object=0;                        // 二次幾何體標(biāo)示符

  
 好了我們現(xiàn)在開始搞InitGL()函數(shù)。我們打算增加3行代碼用來初始化我們的二次曲面。這3行代碼將在你使1號(hào)光源有效后增加,但是要在返回之前。第一行代碼將初始化二次曲面并且創(chuàng)建一個(gè)指向改二次曲面的指針,如果改二次曲面不能被創(chuàng)建的話,那么該指針就是NULL。第二行代碼將在二次曲面的表面創(chuàng)建平滑的法向量,這樣當(dāng)燈光照上去的時(shí)候?qū)?huì)好看些。另外一些可能的取值是:GLU_NONE和GLU_FLAT。最后我們使在二次曲面表面的紋理映射有效。 
  

    quadratic=gluNewQuadric();                // 創(chuàng)建二次幾何體
    gluQuadricNormals(quadratic, GLU_SMOOTH);        // 使用平滑法線
    gluQuadricTexture(quadratic, GL_TRUE);        // 使用紋理
  
 現(xiàn)在我決定在本課里保留立方體,這樣你可以看到紋理是如何映射到二次曲面對(duì)象上的。而且我打算將繪制立方體的代碼定義為一個(gè)單獨(dú)的函數(shù),這樣我們?cè)诙x函數(shù)Draw()的時(shí)候它將會(huì)變的不那么凌亂。每個(gè)人都應(yīng)該記住這些代碼: 
  

GLvoid glDrawCube()                    // 繪制立方體
{
        glBegin(GL_QUADS);           
        // 前面
        glNormal3f( 0.0f, 0.0f, 1.0f);       
        glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);   
        glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);   
        glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);   
        glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);   
        // 后面
        glNormal3f( 0.0f, 0.0f,-1.0f);       
        glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);   
        glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);   
        glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);   
        glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);   
        // 上面
        glNormal3f( 0.0f, 1.0f, 0.0f);       
        glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);   
        glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f,  1.0f,  1.0f);   
        glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f,  1.0f,  1.0f);   
        glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);   
        // 下面
        glNormal3f( 0.0f,-1.0f, 0.0f);       
        glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);   
        glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);   
        glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);   
        glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);   
        // 右面
        glNormal3f( 1.0f, 0.0f, 0.0f);       
        glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);   
        glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f, -1.0f);   
        glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);   
        glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);   
        // 左面
        glNormal3f(-1.0f, 0.0f, 0.0f);       
        glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);   
        glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);   
        glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);   
        glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f, -1.0f);   
    glEnd();                   
}

  
 接下來就是場景繪制函數(shù)了,在這里我只寫一個(gè)簡單的例子。并且當(dāng)我繪制一個(gè)部分的盤子的時(shí)候,我將使用一個(gè)靜態(tài)變量(一個(gè)局部的變量,該變量可以保留他的值不論你任何時(shí)候調(diào)用他)來表達(dá)一個(gè)非常酷的效果。為了清晰起見我將要重寫DrawGLScene函數(shù)。
   你們將會(huì)注意到當(dāng)我討論這些正在使用的參數(shù)時(shí)我忽略了當(dāng)前函數(shù)的第一個(gè)參數(shù)(quadratic)。這個(gè)參數(shù)將被除立方體外的所有對(duì)象使用。所以當(dāng)我討論這些參數(shù)的時(shí)候我忽略了它。 
  

int DrawGLScene(GLvoid)                       
{
        //...
// 這部分是新增加的
    switch(object)                        // 繪制哪一種二次幾何體
    {
    case 0:                            // 繪制立方體
        glDrawCube();                   
        break;                       

  
 我們創(chuàng)建的第2個(gè)對(duì)象是一個(gè)圓柱體。參數(shù)1(1.0F)是圓柱體的底面半徑,參數(shù)2(1.0F)是圓柱體的餓頂面半徑,參數(shù)3(3.0F)是圓柱體的高度。參數(shù)4(32)是緯線(環(huán)繞Z軸有多少細(xì)分),參數(shù)5(32)是經(jīng)線(沿著Z軸有多少細(xì)分)。細(xì)分越多該對(duì)象就越細(xì)致。我們可以用增加細(xì)分的方法來增加對(duì)象的多邊形數(shù)。因此你可以犧牲速度換回質(zhì)量(以時(shí)間換質(zhì)量),大多數(shù)的時(shí)候我們都可以很容易的找到一個(gè)合適的“度”。
 
  

    case 1:                            // 繪制圓柱體
        glTranslatef(0.0f,0.0f,-1.5f);           
        gluCylinder(quadratic,1.0f,1.0f,3.0f,32,32);   
        break;                       
  
 對(duì)象3將會(huì)創(chuàng)建一個(gè)CD樣子的盤子。參數(shù)1(0.5F)是盤子的內(nèi)圓半徑,該參數(shù)可以為0,則表示在盤子中間沒孔,內(nèi)圓半徑越大孔越大。參數(shù)2(1.5F)表示外圓半徑,這個(gè)參數(shù)必須比內(nèi)圓半徑大。參數(shù)3(32)是組成該盤子的切片的數(shù)量,這個(gè)數(shù)量可以想象成披薩餅中的切片的數(shù)量。切片越多,外圓邊緣就越平滑。最后一個(gè)參數(shù)(32)是組成盤子的環(huán)的數(shù)量。環(huán)很像唱片上的軌跡,一環(huán)套一環(huán)。這些環(huán)從內(nèi)圓半徑細(xì)分到外圓半徑。再說一次,細(xì)分越多,速度越慢。 
  

    case 2:                            // 繪制圓盤
        gluDisk(quadratic,0.5f,1.5f,32,32);       
        break;                       
  
 我們的第4個(gè)對(duì)象我知道你們?yōu)槊枋鏊谋M精力。就是球。繪制球?qū)?huì)變的非常簡單。參數(shù)1是球的半徑。如果你無法理解半徑/直徑等等的話,可以理解成物體中心到物體外部的距離,在這里我們使用1.3F作為半徑。接下來兩個(gè)參數(shù)就是細(xì)分了,和圓柱體一樣,參數(shù)2是緯線,參數(shù)3是經(jīng)線。細(xì)分越多球看起來就越平滑,通常球需要多一些的細(xì)分以使他們看起來平滑。
 
  

    case 3:                            // 繪制球
        gluSphere(quadratic,1.3f,32,32);       
        break;                       
  
 我們創(chuàng)建的第4個(gè)對(duì)象使用與我們?cè)?jīng)創(chuàng)建的圓柱體一樣的命令來創(chuàng)建,如果你還記得的話,我們可以通過控制參數(shù)2和參數(shù)3來控制頂面半徑和地面半徑。因此我們可以使頂面半徑為0來繪制一個(gè)圓錐體,頂面半徑為0將會(huì)在頂面上創(chuàng)建一個(gè)點(diǎn)。因此在下面的代碼中,我們使頂面半徑等于0,這將會(huì)創(chuàng)建一個(gè)點(diǎn),同時(shí)也就創(chuàng)建了我們的圓錐。 
  

    case 4:                            // 繪制圓錐
        glTranslatef(0.0f,0.0f,-1.5f);           
        gluCylinder(quadratic,1.0f,0.0f,3.0f,32,32);   
        break;                       
  
 我們的第6個(gè)對(duì)象將被gluPartialDisk函數(shù)創(chuàng)建。我們打算創(chuàng)建的這個(gè)對(duì)象使用了一些命令,這些命令在我們創(chuàng)建對(duì)象之前,你將會(huì)清楚的看到。但是命令gluPartialDisk擁有兩個(gè)新的參數(shù)。第5個(gè)參數(shù)是我們想要繪制的部分盤子的開始角度,參數(shù)6是旋轉(zhuǎn)角,也就是轉(zhuǎn)過的角度。我們將要增加旋轉(zhuǎn)角,這將引起盤子沿順時(shí)針方向緩慢的被繪制在屏幕上。一旦旋轉(zhuǎn)角達(dá)到360度我們將開始增加開始角度,這樣盤子看起來就想是被逐漸的抹去一樣。我們將重復(fù)這些過程。 
  

    case 5:                            // 繪制部分圓盤
        part1+=p1;                   
        part2+=p2;                   

        if(part1>359)                   
        {
            p1=0;                   
            part1=0;               
            p2=1;                   
            part2=0;               
        }
        if(part2>359)                   
        {
            p1=1;                   
            p2=0;                   
        }
        gluPartialDisk(quadratic,0.5f,1.5f,32,32,part1,part2-part1);   
        break;                       
    };

        //...
}

  
 In the KillGLWindow() section of code, we need to delete the quadratic to free up system resources. We do this with the command gluDeleteQuadratic.  
  

GLvoid KillGLWindow(GLvoid)                   
{
    gluDeleteQuadric(quadratic);                // 刪除二次幾何體

  
 在最后,我給出鍵盤輸入代碼。僅僅增加一些對(duì)剩余鍵的檢查。
 
  

                if (keys[' '] && !sp)        // 空格是否按下
                {
                    sp=TRUE;            // 是,則繪制下一種二次幾何體
                    object++;       
                    if(object>5)       
                        object=0;   
                }
                if (!keys[' '])            // 空格是否釋放
                {
                    sp=FALSE;            // 記錄這個(gè)狀態(tài)
                }

  
 這就是全部了。現(xiàn)在你可以在OpenGL中繪制二次曲面了。

 


posted on 2007-12-16 14:25 sdfasdf 閱讀(1021) 評(píng)論(1)  編輯 收藏 引用 所屬分類: OPENGL

Feedback

# re: NEHE的OPENGL教程 第十八課 二次幾何體 2007-12-17 09:07 書瑗
頂  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧美不卡| 在线亚洲欧美| 美玉足脚交一区二区三区图片| 国产一区二区日韩精品| 欧美在线观看一二区| 欧美在线视频免费播放| 在线看成人片| 亚洲精品综合精品自拍| 亚洲精品之草原avav久久| 国产精品久久久久久福利一牛影视 | 久久女同互慰一区二区三区| 久久婷婷成人综合色| 亚洲人www| 亚洲免费观看视频| 国产啪精品视频| 欧美大片在线看免费观看| 欧美国产一区二区| 亚洲私人影吧| 欧美在线一区二区三区| 99re在线精品| 欧美一区二区三区四区视频 | 久久中文字幕一区二区三区| 亚洲精品小视频在线观看| 夜夜精品视频| 亚洲成人在线| 夜夜嗨av色一区二区不卡| 国产一区二区三区在线观看免费视频| 另类图片综合电影| 欧美午夜一区二区三区免费大片 | 亚洲欧洲日本国产| 亚洲欧美激情一区| 日韩天堂在线观看| 久久久7777| 亚洲欧美中文日韩v在线观看| 久久综合九色欧美综合狠狠| 亚洲一区在线免费| 女人香蕉久久**毛片精品| 午夜精品久久久久影视| 欧美成年人网| 久久精品国产成人| 欧美小视频在线观看| 欧美国产乱视频| 国产亚洲精品bt天堂精选| 亚洲伦理中文字幕| 亚洲欧洲精品一区二区三区波多野1战4| 中文在线资源观看网站视频免费不卡| 亚洲国产成人精品视频| 亚洲欧美日韩一区二区三区在线观看 | 亚洲一区二区三区高清不卡| 亚洲精品日韩在线观看| 久久婷婷国产综合精品青草| 欧美在线网站| 国产精品国产精品| 99这里只有久久精品视频| 99亚洲一区二区| 欧美 日韩 国产一区二区在线视频| 久久国产欧美| 国产亚洲欧美另类一区二区三区| 亚洲视频一区二区免费在线观看| 一区二区三区四区精品| 欧美精品一区二区三区在线播放 | 欧美二区不卡| 欧美成人免费一级人片100| 久久久综合网| 国产区在线观看成人精品| 亚洲欧美不卡| 久久精品中文字幕免费mv| 国产人成一区二区三区影院| 亚洲综合精品四区| 欧美在线在线| 国产一区二区三区直播精品电影 | 久久久一二三| 欧美电影在线| 亚洲精品乱码久久久久久按摩观 | 亚洲一级网站| 欧美在线视频免费| 黄色成人av在线| 免播放器亚洲一区| 99精品国产一区二区青青牛奶| 一本久久综合| 国产精品视频yy9099| 久久黄金**| 男女激情久久| 亚洲精品免费在线播放| 欧美日韩亚洲一区二区三区四区| 日韩一区二区精品视频| 欧美一级在线视频| 精品成人一区二区| 欧美精品二区三区四区免费看视频| 亚洲精品乱码视频| 午夜久久资源| 激情综合久久| 欧美激情视频一区二区三区在线播放 | 亚洲美女网站| 国产精品天天看| 久久婷婷av| 亚洲视频在线观看免费| 老司机精品导航| 99riav久久精品riav| 国产免费亚洲高清| 久久久欧美精品sm网站| 亚洲精品视频在线观看免费| 欧美中文字幕在线| 亚洲国产一成人久久精品| 国产精品红桃| 久久综合久久久久88| 亚洲视频一二区| 欧美顶级艳妇交换群宴| 久久成人精品无人区| 日韩亚洲精品在线| 国产视频一区在线观看一区免费| 欧美激情一区二区三区蜜桃视频| 午夜日韩在线| 亚洲激情成人| 毛片av中文字幕一区二区| 亚洲欧美成人综合| 亚洲精品之草原avav久久| 国产自产女人91一区在线观看| 欧美日韩国产在线播放网站| 久久蜜桃av一区精品变态类天堂| 亚洲一区二区三区免费观看| 亚洲成人在线视频播放 | 一区二区高清在线| 你懂的视频一区二区| 午夜精品久久久久久久久久久久久| 欧美激情aaaa| 乱人伦精品视频在线观看| 午夜久久影院| 亚洲一级影院| 一本色道久久综合亚洲精品按摩| 亚洲电影免费观看高清完整版在线| 国产免费一区二区三区香蕉精| 欧美日韩国产精品一区| 你懂的亚洲视频| 裸体歌舞表演一区二区| 午夜久久黄色| 亚洲资源在线观看| 亚洲午夜高清视频| 99在线视频精品| 亚洲人成网站999久久久综合| 欧美成人免费全部| 欧美r片在线| 麻豆精品精华液| 欧美1区2区视频| 免费在线欧美视频| 欧美激情一区二区三区成人| 欧美超级免费视 在线| 媚黑女一区二区| 欧美第一黄网免费网站| 欧美激情成人在线视频| 亚洲第一色中文字幕| 91久久精品国产91性色| 日韩一级黄色av| 夜夜夜精品看看| 亚洲男人的天堂在线观看| 亚洲综合色自拍一区| 香蕉久久夜色精品| 久久久久久网站| 欧美成人精品在线观看| 欧美日韩国产区一| 国产欧美一区二区三区国产幕精品| 国产欧美日韩亚洲| 在线免费观看日本一区| 日韩视频免费观看| 午夜精品一区二区三区四区 | 亚洲精品孕妇| 亚洲视频在线观看| 欧美一区二区三区精品电影| 久久久噜噜噜久久狠狠50岁| 亚洲第一在线综合网站| 亚洲区国产区| 亚洲一区二区视频在线观看| 久久久久久亚洲精品杨幂换脸 | 久久久噜噜噜久噜久久| 欧美大胆人体视频| 国产精品美女主播在线观看纯欲| 国内精品免费在线观看| 亚洲毛片一区| 欧美一区二区三区在线视频 | 99热这里只有精品8| 亚洲在线日韩| 亚洲第一搞黄网站| 亚洲自拍三区| 欧美成人精品在线| 国产亚洲欧美aaaa| a91a精品视频在线观看| 久久香蕉国产线看观看网| 亚洲精品免费观看| 久久国产毛片| 国产精品久久久久av免费| 亚洲国产精品久久久久久女王| 午夜视黄欧洲亚洲| 亚洲激情视频在线播放| 久久精品人人做人人综合| 欧美日韩伊人| 亚洲高清资源综合久久精品| 久久www成人_看片免费不卡| 日韩亚洲一区二区| 欧美 日韩 国产一区二区在线视频 | 欧美国产先锋|