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

  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>
            欧美高清在线视频观看不卡| 亚洲国产欧美精品| 在线视频亚洲| 日韩一区二区精品葵司在线| 欧美激情aⅴ一区二区三区| 欧美黄污视频| 欧美国产日本在线| 亚洲国产婷婷| 最新国产の精品合集bt伙计| 亚洲大胆女人| 亚洲日本va午夜在线影院| 99re国产精品| 校园激情久久| 欧美成人一区在线| 欧美三级特黄| 国产原创一区二区| 亚洲日本视频| 亚洲欧美日韩精品久久久久| 久久久久久久久岛国免费| 欧美电影免费观看高清完整版| 亚洲三级视频| 欧美中文字幕| 欧美日韩国产探花| 狠狠色丁香久久婷婷综合_中| 亚洲精品欧美日韩专区| 亚欧成人在线| 91久久夜色精品国产九色| 在线亚洲电影| 久久综合伊人77777蜜臀| 欧美人与性禽动交情品 | 另类天堂av| 日韩午夜免费| 久久久久久午夜| 国产精品入口福利| 亚洲精品在线二区| 久久精品成人欧美大片古装| 欧美激情精品久久久久久免费印度 | 欧美国产另类| 国产伪娘ts一区| 亚洲视频一二区| 麻豆精品精华液| 亚洲天堂av图片| 欧美高清视频在线播放| 国产欧美91| 亚洲一级二级在线| 亚洲高清在线视频| 久久精品一本久久99精品| 国产精品久久久久久久久久久久久| 永久555www成人免费| 欧美在线视频免费观看| 一二三四社区欧美黄| 欧美大片在线观看一区| 久久久av网站| 欧美第一黄网免费网站| 欧美天天综合网| 亚洲精品视频在线播放| 快射av在线播放一区| 欧美在线观看网址综合| 国产精品青草综合久久久久99| 亚洲免费激情| 亚洲日本在线观看| 欧美黑人在线播放| 91久久精品一区| 免费在线观看精品| 久久频这里精品99香蕉| 狠狠色狠狠色综合人人| 久久精品国产欧美激情| 香蕉视频成人在线观看| 国产日韩欧美a| 久久久久免费视频| 久久久精品国产免费观看同学| 激情久久久久久久| 久久午夜视频| 久久久久久夜| 亚洲精品美女在线观看| 亚洲精品欧洲| 国产精品久久久久7777婷婷| 亚洲特级毛片| 午夜视频精品| 亚洲电影成人| 亚洲国产精品久久人人爱蜜臀 | 欧美一区二区黄| 精品成人久久| 亚洲狠狠婷婷| 国产精品九九| 美日韩免费视频| 欧美日本在线观看| 欧美综合77777色婷婷| 久久免费视频在线观看| 亚洲精选一区| 亚洲欧美中文字幕| 亚洲福利视频网站| 一区二区三区欧美激情| 国产在线精品一区二区夜色| 欧美成人午夜激情在线| 欧美色精品天天在线观看视频| 午夜精品久久久久| 久久只有精品| 亚洲免费在线视频| 欧美 亚欧 日韩视频在线| 亚洲女性裸体视频| 欧美在线视频免费| 日韩视频免费观看| 欧美在线视频免费播放| 在线视频欧美日韩| 久久婷婷国产综合尤物精品| 中文一区二区| 久久麻豆一区二区| 亚洲欧美日韩精品综合在线观看| 久久婷婷成人综合色| 午夜精品久久久久久99热| 欧美高清在线精品一区| 亚洲在线视频观看| 亚洲精品欧洲精品| 欧美国产日韩xxxxx| 在线视频欧美日韩精品| 久久久久成人精品免费播放动漫| 亚洲人成人77777线观看| 亚洲激情第一区| 国产亚洲精品成人av久久ww| 91久久精品国产91久久| 国产亚洲视频在线| 一本色道久久综合亚洲精品不| 精品动漫av| 午夜精品久久久久久久久| 一区二区免费看| 久久综合久久综合九色| 欧美伊人影院| 国产精品国产三级国产专播精品人 | 欧美一级黄色录像| 欧美人在线观看| 亚洲国产精品成人综合| 亚洲国产成人av在线| 久久狠狠一本精品综合网| 久久国产欧美| 国产一区二区三区丝袜| 午夜伦欧美伦电影理论片| 欧美一区二区女人| 国产精品婷婷| 性久久久久久久久| 久久久91精品国产一区二区三区| 国产情侣一区| 欧美资源在线观看| 久热国产精品| 亚洲高清激情| 欧美电影资源| 日韩亚洲视频在线| 亚洲一区区二区| 国产欧美亚洲一区| 欧美在线视频导航| 免费影视亚洲| 99这里有精品| 国产精品成人一区二区艾草| 亚洲一区国产一区| 久久国产欧美| 亚洲精品国产品国语在线app| 欧美电影免费观看高清完整版| 亚洲黄色在线| 亚洲少妇中出一区| 国产精品香蕉在线观看| 久久狠狠婷婷| 亚洲国产精品久久精品怡红院| 一区二区三区高清| 国产精品一区一区三区| 久久综合国产精品台湾中文娱乐网| 欧美激情第五页| 亚洲欧美日本另类| 亚洲第一色中文字幕| 欧美视频一区在线观看| 亚洲专区一区二区三区| 蜜桃视频一区| 午夜久久久久久久久久一区二区| 亚洲高清一区二区三区| 久久中文精品| 亚洲午夜电影| 国产日韩一区在线| 欧美顶级少妇做爰| 亚洲视频免费在线| 美女精品网站| 亚洲综合电影| 亚洲国产精品一区| 国产精品一级二级三级| 久久资源av| 亚洲欧美日韩一区二区在线| 亚洲人成久久| 国语自产精品视频在线看8查询8| 欧美jizz19性欧美| 亚洲影音一区| 亚洲精品欧美| 免费观看日韩av| 午夜精品久久久久久久男人的天堂| 伊人天天综合| 国产欧美日本一区二区三区| 久久婷婷国产综合精品青草| 宅男噜噜噜66国产日韩在线观看| 久久综合九色九九| 欧美一区二区日韩| 一区二区日韩| 亚洲精品一区中文| 亚洲电影免费|