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

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

常用鏈接

留言簿(48)

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

搜索

  •  

積分與排名

  • 積分 - 401643
  • 排名 - 59

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

在上節(jié)課的內(nèi)容上作些擴(kuò)展,我們現(xiàn)在開(kāi)始生成真正的3D對(duì)象,而不是象前兩節(jié)課中那樣3D世界中的2D對(duì)象。我們給三角形增加一個(gè)左側(cè)面,一個(gè)右側(cè)面,一個(gè)后側(cè)面來(lái)生成一個(gè)金字塔(四棱錐)。給正方形增加左、右、上、下及背面生成一個(gè)立方體。
   我們混合金字塔上的顏色,創(chuàng)建一個(gè)平滑著色的對(duì)象。給立方體的每一面則來(lái)個(gè)不同的顏色。

  int DrawGLScene(GLvoid)                  // 此過(guò)程中包括所有的繪制代碼
  {
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// 清除屏幕及深度緩存
      glLoadIdentity();                 // 重置模型觀(guān)察矩陣
      glTranslatef(-1.5f,0.0f,-6.0f);          // 左移 1.5 單位,并移入屏幕 6.0

      glRotatef(rtri,0.0f,1.0f,0.0f);          // 繞Y軸旋轉(zhuǎn)金字塔

      glBegin(GL_TRIANGLES);               // 開(kāi)始繪制金字塔的各個(gè)面

   有些人可能早已在上節(jié)課中的代碼上嘗試自行創(chuàng)建3D對(duì)象了。但經(jīng)常有人來(lái)信問(wèn)我:“我的對(duì)象怎么不會(huì)繞著其自身的軸旋轉(zhuǎn)?看起來(lái)總是在滿(mǎn)屏亂轉(zhuǎn)。”要讓您的對(duì)象繞自身的軸旋轉(zhuǎn),您必須讓對(duì)象的中心坐標(biāo)總是(0.0f,0,0f,0,0f)。
   下面的代碼創(chuàng)建一個(gè)繞者其中心軸旋轉(zhuǎn)的金字塔。金字塔的上頂點(diǎn)離中心一個(gè)單位,底面離中心也是一個(gè)單位。上頂點(diǎn)在底面的投影位于底面的中心。
   注意所有的面 — 三角形都是逆時(shí)針次序繪制的。這點(diǎn)十分重要,在以后的課程中我會(huì)作出解釋。現(xiàn)在,您只需明白要么都逆時(shí)針,要么都順時(shí)針,但永遠(yuǎn)不要將兩種次序混在一起,除非您有足夠的理由必須這么做。
我們開(kāi)始畫(huà)金字塔的前側(cè)面。因?yàn)樗械拿娑脊蚕砩享旤c(diǎn),我們將這點(diǎn)在所有的三角形中都設(shè)置為紅色。底邊上的兩個(gè)頂點(diǎn)的顏色則是互斥的。前側(cè)面的左下頂點(diǎn)是 綠色的,右下頂點(diǎn)是藍(lán)色的。這樣相鄰右側(cè)面的左下頂點(diǎn)是藍(lán)色的,右下頂點(diǎn)是綠色的。這樣四邊形的底面上的點(diǎn)的顏色都是間隔排列的。

          glColor3f(1.0f,0.0f,0.0f);         // 紅色
          glVertex3f( 0.0f, 1.0f, 0.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è)面)

   現(xiàn)在繪制右側(cè)面。注意其底邊上的兩個(gè)頂點(diǎn)的X坐標(biāo)位于中心右側(cè)的一個(gè)單位處。頂點(diǎn)則位于Y軸上的一單位處,且Z坐標(biāo)正好處于底邊的兩頂點(diǎn)的Z坐標(biāo)中心。右側(cè)面從上頂點(diǎn)開(kāi)始向外側(cè)傾斜至底邊上。
   這次的左下頂點(diǎn)用藍(lán)色繪制,以保持與前側(cè)面的右下頂點(diǎn)的一致。藍(lán)色將從這個(gè)角向金字塔的前側(cè)面和右側(cè)面擴(kuò)展并與其他顏色混合。
   還應(yīng)注意到后面的三個(gè)側(cè)面和前側(cè)面處于同一個(gè)glBegin(GL_TRIANGLES)和glEnd()語(yǔ)句中間。因?yàn)槲覀兪峭ㄟ^(guò)三角形來(lái)構(gòu)造這個(gè)金字塔的。OpenGL知道每三個(gè)點(diǎn)構(gòu)成一個(gè)三角形。當(dāng)它畫(huà)完一個(gè)三角形之后,如果還有余下的點(diǎn)出現(xiàn),它就以為新的三角形要開(kāi)始繪制了。OpenGL在這里并不會(huì)將四點(diǎn)畫(huà)成一個(gè)四邊形,而是假定新的三角形開(kāi)始了。所以千萬(wàn)不要無(wú)意中增加任何多余的點(diǎn)。
   現(xiàn)在是后側(cè)面。再次切換顏色。左下頂點(diǎn)又回到綠色,因?yàn)楹髠?cè)面與右側(cè)面共享這個(gè)角。

          glColor3f(1.0f,0.0f,0.0f);         // 紅色
          glVertex3f( 0.0f, 1.0f, 0.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è)面)

   最后畫(huà)左側(cè)面。又要切換顏色。左下頂點(diǎn)是藍(lán)色,與后側(cè)面的右下頂點(diǎn)相同。右下頂點(diǎn)是藍(lán)色,與前側(cè)面的左下頂點(diǎn)相同。
   到這里金字塔就畫(huà)完了。因?yàn)榻鹱炙焕@著Y軸旋轉(zhuǎn),我們永遠(yuǎn)都看不見(jiàn)底面,因而沒(méi)有必要添加底面。如果您覺(jué)得有經(jīng)驗(yàn)了,嘗試增加底面(正方形),并將金字塔繞X軸旋轉(zhuǎn)來(lái)看看您是否作對(duì)了。確保底面四個(gè)頂點(diǎn)的顏色與側(cè)面的顏色相匹配。

          glColor3f(1.0f,0.0f,0.0f);         // 紅色
          glVertex3f( 0.0f, 1.0f, 0.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.0f, 1.0f);       // 三角形的右下頂點(diǎn) (左側(cè)面)
      glEnd();                      //金字塔繪制結(jié)束

   接下來(lái)開(kāi)始畫(huà)立方體。他由六個(gè)四邊形組成。所有的四邊形都以逆時(shí)針次序繪制。就是說(shuō)先畫(huà)右上角,然后左上角、左下角、最后右下角。您也許認(rèn)為畫(huà)立方體的背面的時(shí)候這個(gè)次序看起來(lái)好像順時(shí)針,但別忘了我們從立方體的背后看背面的時(shí)候,與您現(xiàn)在所想的正好相反。(譯者:您是從立方體的外面來(lái)觀(guān)察立方體的)。
   注意到這次我們將立方體移地更遠(yuǎn)離屏幕了。因?yàn)榱⒎襟w的大小要比金字塔大,同樣移入6個(gè)單位時(shí),立方體看起來(lái)要大的多。這是透視的緣故。越遠(yuǎn)的對(duì)象看起來(lái)越小。

      glLoadIdentity();
       glTranslatef(1.5f,0.0f,-7.0f);
           // 先右移再移入屏幕
      glRotatef(rquad,1.0f,1.0f,1.0f);          // 在XYZ軸上旋轉(zhuǎn)立方體
      glBegin(GL_QUADS);                 // 開(kāi)始繪制立方體

   先畫(huà)立方體的頂面。從中心上移一單位,注意Y坐標(biāo)始終為一單位,表示這個(gè)四邊形與Z軸平行。先畫(huà)右上頂點(diǎn),向右一單位,再屏幕向里一單位。然后左上頂點(diǎn),向左一單位,再屏幕向里一單位。然后是靠近觀(guān)察者的左下和右下頂點(diǎn)。就是屏幕往外一單位。

          glColor3f(0.0f,1.0f,0.0f);         // 顏色改為藍(lán)色
?         ?glVertex3f( 1.0f, 1.0f,-1.0f);       // 四邊形的右上頂點(diǎn) (頂面)
          glVertex3f(-1.0f, 1.0f,-1.0f);       // 四邊形的左上頂點(diǎn) (頂面)
          glVertex3f(-1.0f, 1.0f, 1.0f);       // 四邊形的左下頂點(diǎn) (頂面)
          glVertex3f( 1.0f, 1.0f, 1.0f);       // 四邊形的右下頂點(diǎn) (頂面)

   底面的畫(huà)法和頂面十分類(lèi)似。只是Y坐標(biāo)變成了-1。如果我們從立方體的下面來(lái)看立方體的話(huà),您會(huì)注意到右上角離觀(guān)察者最近,因此我們先畫(huà)離觀(guān)察者最近的頂點(diǎn)。然后是左上頂點(diǎn)最后才是屏幕里面的左下和右下頂點(diǎn)。
   如果您真的不在乎繪制多邊形的次序(順時(shí)針或者逆時(shí)針)的話(huà),您可以直接拷貝頂面的代碼,將Y坐標(biāo)從1改成-1,也能夠工作。但一旦您進(jìn)入象紋理映射這樣的領(lǐng)域時(shí),忽略繪制次序會(huì)導(dǎo)致十分怪異的結(jié)果。

          glColor3f(1.0f,0.5f,0.0f);         // 顏色改成橙色
          glVertex3f( 1.0f,-1.0f, 1.0f);       // 四邊形的右上頂點(diǎn)(底面)
          glVertex3f(-1.0f,-1.0f, 1.0f);       // 四邊形的左上頂點(diǎn)(底面)
          glVertex3f(-1.0f,-1.0f,-1.0f);       // 四邊形的左下頂點(diǎn)(底面)
          glVertex3f( 1.0f,-1.0f,-1.0f);       // 四邊形的右下頂點(diǎn)(底面)

   接著畫(huà)立方體的前面。保持Z坐標(biāo)為一單位,前面正對(duì)著我們。

          glColor3f(1.0f,0.0f,0.0f);         // 顏色改成紅色
          glVertex3f( 1.0f, 1.0f, 1.0f);       // 四邊形的右上頂點(diǎn)(前面)
          glVertex3f(-1.0f, 1.0f, 1.0f);       // 四邊形的左上頂點(diǎn)(前面)
          glVertex3f(-1.0f,-1.0f, 1.0f);       // 四邊形的左下頂點(diǎn)(前面)
          glVertex3f( 1.0f,-1.0f, 1.0f);       // 四邊形的右下頂點(diǎn)(前面)

   立方體后面的繪制方法與前面類(lèi)似。只是位于屏幕的里面。注意Z坐標(biāo)現(xiàn)在保持-1不變。

          glColor3f(1.0f,1.0f,0.0f);         // 顏色改成黃色
          glVertex3f( 1.0f,-1.0f,-1.0f);       // 四邊形的右上頂點(diǎn)(后面)
          glVertex3f(-1.0f,-1.0f,-1.0f);       // 四邊形的左上頂點(diǎn)(后面)
          glVertex3f(-1.0f, 1.0f,-1.0f);       // 四邊形的左下頂點(diǎn)(后面)
          glVertex3f( 1.0f, 1.0f,-1.0f);       // 四邊形的右下頂點(diǎn)(后面)

   還剩兩個(gè)面就完成了。您會(huì)注意到總有一個(gè)坐標(biāo)保持不變。這一次換成了X坐標(biāo)。因?yàn)槲覀冊(cè)诋?huà)左側(cè)面。

          glColor3f(0.0f,0.0f,1.0f);         // 顏色改成藍(lán)色
          glVertex3f(-1.0f, 1.0f, 1.0f);       // 四邊形的右上頂點(diǎn)(左面)
          glVertex3f(-1.0f, 1.0f,-1.0f);       // 四邊形的左上頂點(diǎn)(左面)
          glVertex3f(-1.0f,-1.0f,-1.0f);       // 四邊形的左下頂點(diǎn)(左面)
          glVertex3f(-1.0f,-1.0f, 1.0f);       // 四邊形的右下頂點(diǎn)(左面)

   立方體的最后一個(gè)面了。X坐標(biāo)保持為一單位。逆時(shí)針繪制。您愿意的話(huà),留著這個(gè)面不畫(huà)也可以,這樣就是一個(gè)盒子。
   或者您要是有興趣可以改變立方體所有頂點(diǎn)的色彩值,象金字塔那樣混合顏色。您會(huì)看見(jiàn)一個(gè)非常漂亮的彩色立方體,各種顏色在它的各個(gè)表面流淌。

          glColor3f(1.0f,0.0f,1.0f);        // 顏色改成紫羅蘭色
          glVertex3f( 1.0f, 1.0f,-1.0f);      // 四邊形的右上頂點(diǎn)(右面)
          glVertex3f( 1.0f, 1.0f, 1.0f);      // 四邊形的左上頂點(diǎn)(右面)
          glVertex3f( 1.0f,-1.0f, 1.0f);      // 四邊形的左下頂點(diǎn)(右面)
          glVertex3f( 1.0f,-1.0f,-1.0f);      // 四邊形的右下頂點(diǎn)(右面)
      glEnd();                     // 立方體繪制結(jié)束

      rtri+=0.2f;                    // 增加三角形的旋轉(zhuǎn)變量(新增)
      rquad-=0.15f;                   // 減少四邊形的旋轉(zhuǎn)變量(新增)
      return TRUE;                   // 繼續(xù)運(yùn)行
  }

posted on 2007-12-10 11:38 sdfasdf 閱讀(691) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): OPENGL
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧美日韩国产综合在线 | 久久全球大尺度高清视频| 在线观看亚洲精品视频| 国产真实精品久久二三区| 国产婷婷色一区二区三区| 国产精品盗摄一区二区三区| 欧美 日韩 国产一区二区在线视频| 香港久久久电影| 亚洲图片欧洲图片av| 久久嫩草精品久久久精品| 99av国产精品欲麻豆| 国产精品亚洲网站| 免费人成精品欧美精品| 亚洲欧美国产精品va在线观看 | 亚洲丝袜av一区| 久久久免费观看视频| 亚洲美洲欧洲综合国产一区| 国产精品国产三级国产专播品爱网| 久久久久久久网| 亚洲一区二区三区免费在线观看| 女人天堂亚洲aⅴ在线观看| 亚洲宅男天堂在线观看无病毒| 樱桃视频在线观看一区| 国产精品免费看久久久香蕉| 欧美韩日亚洲| 久久亚洲精品一区二区| 先锋影音国产精品| aaa亚洲精品一二三区| 亚洲国产精品激情在线观看| 亚洲在线中文字幕| 一区二区欧美激情| 亚洲精品在线三区| 亚洲国产成人精品女人久久久 | 免费高清在线视频一区·| 亚洲欧美在线一区二区| 一区二区在线观看av| 欧美激情视频在线播放| 亚洲精品网站在线播放gif| 国产网站欧美日韩免费精品在线观看 | 国产精品二区在线| 欧美激情网友自拍| 91久久久久久久久久久久久| 一区二区三区视频观看| 国产精品一区免费观看| 久久久精品日韩欧美| 久久精品国产v日韩v亚洲| 久久不见久久见免费视频1| 久久精品亚洲| 亚洲日本va午夜在线影院| 欧美一区国产一区| 久久久久一区二区三区| 久久久久国产精品人| 久久人人精品| 亚洲第一精品电影| 亚洲精品视频在线观看免费| 亚洲毛片在线观看.| 一区二区三区四区五区精品| 欧美一区观看| 一本一道久久综合狠狠老精东影业| 国产精品久久久久久久浪潮网站 | 国产精品99久久久久久久女警| 日韩亚洲成人av在线| 亚洲视频福利| 久久久精品2019中文字幕神马| 免费观看日韩av| 欧美日韩中字| 国产一区二区三区高清播放| 亚洲国产精品久久久久秋霞蜜臀 | 亚洲激情不卡| 正在播放亚洲| 久久免费午夜影院| 欧美日本一区| 国产农村妇女精品| 亚洲日本中文| 久久不射中文字幕| 欧美激情欧美狂野欧美精品 | 一区二区三区www| 亚洲欧美经典视频| 另类尿喷潮videofree| 国产一区成人| 日韩视频一区二区三区| 99精品免费网| 久久久久久精| 日韩亚洲欧美在线观看| 羞羞色国产精品| 欧美人妖在线观看| 亚洲第一在线视频| 久久av二区| 99精品国产福利在线观看免费| 久久久久久久久久看片| 国产精品毛片va一区二区三区| 最新精品在线| 麻豆精品在线视频| 亚洲尤物视频在线| 欧美日韩一级片在线观看| 在线国产精品一区| 久久精品亚洲精品国产欧美kt∨| 亚洲高清在线观看| 亚洲国产激情| 日韩一级大片| 久久野战av| 欧美成人黄色小视频| 国产精品国码视频| 亚洲国产成人av| 免费成人黄色av| 欧美gay视频激情| 亚洲成人直播| 亚洲女女做受ⅹxx高潮| 先锋资源久久| 另类av一区二区| 欧美日产一区二区三区在线观看| 国产亚洲精品7777| 亚洲国产欧美另类丝袜| 久久精品亚洲一区二区三区浴池| 久久成人免费视频| 亚洲一区二区精品在线| 免费国产自线拍一欧美视频| 国产伦精品一区二区三区在线观看 | 亚洲乱码精品一二三四区日韩在线 | 亚洲淫片在线视频| 欧美日韩亚洲视频| 国产精品激情偷乱一区二区∴| 国产精品专区h在线观看| 亚洲精品久久| 亚洲国产一区二区在线| 亚洲欧美日本另类| 毛片一区二区三区| 久久精品欧洲| 久久久久久久久久久久久久一区| 欧美三日本三级三级在线播放| 麻豆精品视频| 日韩午夜高潮| 亚洲网站在线看| 国内成人自拍视频| 欧美91大片| 欧美片在线观看| 亚洲图片你懂的| 午夜欧美理论片| 黑人中文字幕一区二区三区| 欧美aaa级| 欧美日韩免费高清一区色橹橹| 亚洲一区免费观看| 久久精品国产一区二区三区| 亚洲黄一区二区三区| 夜夜躁日日躁狠狠久久88av| 免费人成精品欧美精品| 一区二区三区日韩精品视频| 亚洲综合社区| 亚洲精品乱码视频| 亚洲一区二区三区视频播放| 亚洲电影免费观看高清完整版在线 | 欧美成人情趣视频| 在线亚洲精品| 久久久精品国产免大香伊| 99精品国产一区二区青青牛奶| 一卡二卡3卡四卡高清精品视频| 国产亚洲欧美一区| 日韩视频免费观看高清在线视频 | 日韩视频免费看| 欧美亚洲色图校园春色| 亚洲国产女人aaa毛片在线| 亚洲一区二区三区免费观看| 亚洲人成免费| 久久精品亚洲| 久久精品视频免费观看| 欧美日韩你懂的| 免播放器亚洲| 国产精品一区二区你懂得| 亚洲激情偷拍| 激情综合视频| 亚洲自拍高清| 一区二区三区精品国产| 麻豆精品精品国产自在97香蕉| 午夜亚洲性色视频| 欧美激情综合网| 亚洲二区视频| 在线看片欧美| 久久国产精品久久久久久电车 | 亚洲伦理久久| 翔田千里一区二区| 欧美性猛交xxxx免费看久久久| 亚洲国产精品热久久| 影院欧美亚洲| 男人的天堂亚洲在线| 在线亚洲精品福利网址导航| 久久伊人精品天天| 亚洲一区二区在线| 亚洲国产精品一区二区久| 国产精品大片| 欧美激情中文字幕乱码免费| 亚洲综合国产激情另类一区| 欧美激情小视频| 久久人人97超碰国产公开结果| 亚洲无毛电影| 亚洲精品视频一区二区三区| 国产日韩在线一区| 国产精品久久久久久户外露出| 欧美精品 国产精品| 老妇喷水一区二区三区| 久久精品国产99|