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

  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>
            久久中文精品| 午夜国产精品影院在线观看| 久久精品道一区二区三区| 亚洲视频高清| 亚洲系列中文字幕| 亚洲一区二区三区免费在线观看 | 亚洲男女自偷自拍| 亚洲欧美制服中文字幕| 欧美综合第一页| 欧美α欧美αv大片| 91久久在线观看| 亚洲黑丝在线| 日韩一级黄色大片| 亚洲欧美日韩高清| 久久国产日本精品| 欧美大片网址| 国产精品欧美久久| 亚洲第一二三四五区| 亚洲最新合集| 久久男人资源视频| 日韩一区二区电影网| 亚洲与欧洲av电影| 欧美91福利在线观看| 国产精品久久久久影院色老大| 好吊色欧美一区二区三区四区| 好看的日韩视频| 亚洲一本视频| 亚洲电影在线观看| 亚洲视频一区在线| 麻豆精品精华液| 国产精品日韩一区| 亚洲精品日韩精品| 午夜精彩视频在线观看不卡| 欧美国产日韩a欧美在线观看| 亚洲少妇在线| 欧美精品1区| 亚洲高清资源综合久久精品| 欧美一区亚洲二区| 午夜在线精品偷拍| 亚洲国产免费看| 欧美中文字幕不卡| 欧美日韩国产成人在线| 亚洲丰满少妇videoshd| 欧美一区二区三区免费观看| 亚洲第一在线视频| 久久精品欧美日韩精品| 国产精品午夜视频| 亚洲视频在线观看三级| 亚洲第一精品电影| 老司机一区二区三区| 狠狠色综合色区| 久久国产主播精品| 午夜精品久久久久久久白皮肤| 欧美午夜宅男影院在线观看| 亚洲毛片在线免费观看| 亚洲国产精品女人久久久| 久久综合久久综合久久| 精品粉嫩aⅴ一区二区三区四区| 欧美专区日韩专区| 欧美在线黄色| 尤物九九久久国产精品的分类| 久久亚洲图片| 欧美日产国产成人免费图片| 国产真实久久| 久久aⅴ乱码一区二区三区| 国产精品99久久久久久宅男| 欧美日韩亚洲高清| 亚洲色无码播放| 亚洲午夜精品网| 国产精品女人毛片| 久久激情五月婷婷| 欧美在线视频全部完| 黄色成人在线网址| 欧美jizzhd精品欧美巨大免费| 久久精品视频在线免费观看| 国产美女诱惑一区二区| 中日韩在线视频| 99国产精品久久久久老师| 欧美三区免费完整视频在线观看| 一区二区三区视频免费在线观看| 日韩亚洲在线| 国产精品视频yy9099| 西西人体一区二区| 欧美伊人久久久久久午夜久久久久 | 国产亚洲在线观看| 欧美激情第4页| 国产精品国产三级国产普通话三级 | 国产精品国产三级国产aⅴ浪潮 | 中文欧美字幕免费| 国产精品99久久久久久久久| 国产精品资源在线观看| 免费不卡在线观看| 欧美日韩亚洲综合一区| 久久久久9999亚洲精品| 欧美国产在线观看| 亚洲一区日韩| 老司机免费视频一区二区| 亚洲天堂男人| 久久视频国产精品免费视频在线| 亚洲毛片网站| 久久久久国产精品午夜一区| 亚洲午夜精品网| 久久久久久伊人| 亚洲一区免费| 欧美国产日韩一区二区| 久久se精品一区精品二区| 久久嫩草精品久久久精品| 亚洲一区二区免费视频| 久久免费高清| 欧美一级电影久久| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲在线黄色| 欧美激情aⅴ一区二区三区| 欧美在线不卡| 国产精品久久777777毛茸茸| 欧美国产一区二区| 红桃视频国产一区| 午夜精品一区二区三区四区| 一区二区三区四区五区精品| 裸体歌舞表演一区二区| 久久婷婷一区| 国产在线视频欧美| 亚洲一区二区三区四区视频| 一区二区日韩欧美| 欧美国产精品中文字幕| 欧美国产亚洲另类动漫| 亚洲国产精品专区久久| 久久久精品2019中文字幕神马| 欧美一区二区三区四区高清 | 欧美色大人视频| 亚洲三级视频在线观看| 亚洲国产高清aⅴ视频| 性久久久久久久久久久久| 香蕉乱码成人久久天堂爱免费| 欧美电影免费观看高清完整版| 女主播福利一区| 亚洲国产你懂的| 欧美激情aaaa| 99国产精品久久| 亚洲视频精选在线| 欧美午夜宅男影院| 一本色道婷婷久久欧美| 在线性视频日韩欧美| 欧美日韩视频在线一区二区| 亚洲激情视频在线| 亚洲人成毛片在线播放女女| 国产日韩在线播放| 9久草视频在线视频精品| 久久精品理论片| 久久久噜噜噜久久中文字免| 欧美午夜精品| 一区二区三区成人| 午夜天堂精品久久久久| 国产欧美亚洲精品| 久久久噜噜噜久久| 亚洲片区在线| 亚洲欧美日韩精品一区二区| 国产精品久久久久一区二区| 香蕉免费一区二区三区在线观看| 久久久久一本一区二区青青蜜月| 1024亚洲| 国产精品久久福利| 久久久久综合| 亚洲精品乱码久久久久久| 午夜精品一区二区三区在线播放| 国产手机视频一区二区| 免费视频亚洲| 亚洲伊人久久综合| 欧美成人精品福利| 亚洲欧美日韩在线高清直播| 狠狠久久亚洲欧美| 欧美精品一区二区高清在线观看| 亚洲一区激情| 欧美国产成人在线| 夜夜嗨av一区二区三区四区| 国产精品青草久久久久福利99| 久久久久久一区二区三区| 夜夜嗨av一区二区三区网页| 新67194成人永久网站| 亚洲国产欧美另类丝袜| 国产精品观看| 蜜臀av一级做a爰片久久| 亚洲一区二区视频在线| 欧美韩国在线| 欧美在线视频一区二区三区| 亚洲乱码一区二区| 国产夜色精品一区二区av| 欧美日韩国产一区二区| 久久久久久久久蜜桃| 亚洲午夜精品久久久久久浪潮| 欧美成人在线免费视频| 久久福利资源站| 亚洲欧美日韩国产一区二区三区| 亚洲日韩第九十九页| 激情小说另类小说亚洲欧美| 国产精品一区二区你懂得| 欧美日韩免费高清一区色橹橹| 久久久久国产一区二区三区| 亚洲神马久久| 在线一区二区三区四区|