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

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

常用鏈接

留言簿(48)

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

搜索

  •  

積分與排名

  • 積分 - 401642
  • 排名 - 59

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

第一課中,我教您如何創(chuàng)建一個(gè)OpenGL窗口。這一課中,我將教您如何創(chuàng)建三角形和四邊形。我們講使用來創(chuàng)建GL_TRIANGLES一個(gè)三角形,GL_QUADS來創(chuàng)建一個(gè)四邊形。
   在第一課代碼的基礎(chǔ)上,我們只需在DrawGLScene()過程中增加代碼。下面我重寫整個(gè)過程。如果您計(jì)劃修改上節(jié)課的代碼,只需用下面的代碼覆蓋原來的DrawGLScene()就可以了。

  int DrawGLScene(GLvoid)                   // 此過程中包括所有的繪制代碼
  {
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// 清除屏幕及深度緩存
      glLoadIdentity();                 // 重置視口

   當(dāng)您調(diào)用glLoadIdentity()之后,您實(shí)際上講當(dāng)前點(diǎn)移到了屏幕中心,X坐標(biāo)軸從左至右,Y坐標(biāo)軸從下至上,Z坐標(biāo)軸從里至外。OpenGL屏幕中心的坐標(biāo)值是X和Y軸上的0.0f點(diǎn)。中心左面的坐標(biāo)值是負(fù)值,右面是正值。移向屏幕頂端是正值,移向屏幕底端是負(fù)值。移入屏幕深處是負(fù)值,移出屏幕則是正值。
   glTranslatef(x, y, z)沿著X,Y和Z軸移動(dòng)。根據(jù)前面的次序,下面的代碼沿著X軸左移1.5個(gè)單位,Y軸不動(dòng)(0.0f),最后移入屏幕6.0f個(gè)單位。注意在glTranslatef(x, y, z)中當(dāng)您移動(dòng)的時(shí)候,您并不是相對(duì)屏幕中心移動(dòng),而是相對(duì)與當(dāng)前所在的屏幕位置。

      glTranslatef(-1.5f,0.0f,-6.0f);          // 左移1.5單位,并移入屏幕6.0

   現(xiàn)在我們已經(jīng)移到了屏幕的左半部分,并且將視圖推入屏幕背后足夠的距離以便我們可以看見全部的場景-創(chuàng)建三角形。glBegin(GL_TRIANGLES)的意思是開始繪制三角形,glEnd()告訴OpenGL三角形已經(jīng)創(chuàng)建好了。通常您會(huì)需要畫3個(gè)頂點(diǎn),可以使用GL_TRIANGLES。在絕大多數(shù)的顯卡上,繪制三角形是相當(dāng)快速的。如果要畫四個(gè)頂點(diǎn),使用GL_QUADS的話會(huì)更方便。但據(jù)我所知,絕大多數(shù)的顯卡都使用三角形來為對(duì)象著色。最后,如果您想要畫更多的頂點(diǎn)時(shí),可以使用GL_POLYGON。
   本節(jié)的簡單示例中,我們只畫一個(gè)三角形。如果要畫第二個(gè)三角形的話,可以在這三點(diǎn)之后,再加三行代碼(3點(diǎn))。所有六點(diǎn)代碼都應(yīng)包含在glBegin(GL_TRIANGLES)和glEnd()之間。在他們之間再不會(huì)有多余的點(diǎn)出現(xiàn),也就是說,glBegin(GL_TRIANGLES)和glEnd()之間的點(diǎn)都是以三點(diǎn)為一個(gè)集合的。這同樣適用于四邊形。如果您知道實(shí)在繪制四邊形的話,您必須在第一個(gè)四點(diǎn)之后,再加上四點(diǎn)為一個(gè)集合的點(diǎn)組。另一方面,多邊形可以由任意個(gè)頂點(diǎn),glBegin(GL_POLYGON)不在乎glBegin(GL_TRIANGLES)和glEnd()之間有多少行代碼。glBegin之后的第一行設(shè)置了多邊形的第一個(gè)頂點(diǎn),glVertex的第一個(gè)參數(shù)是X坐標(biāo),然后依次是Y坐標(biāo)和Z坐標(biāo)。第一個(gè)點(diǎn)是上頂點(diǎn),然后是左下頂點(diǎn)和右下頂點(diǎn)。glEnd()告訴OpenGL沒有其他點(diǎn)了。這樣將顯示一個(gè)填充的三角形。
  譯者這里要注意的是存在兩種不同的坐標(biāo)變換方式,glTranslatef(x,y,z)中的x,y,z是相對(duì)與您當(dāng)前所在點(diǎn)的位移,但glVertex(x,y,z)是相對(duì)于glTranslatef(x,y,z)移動(dòng)后的新原點(diǎn)的位移。因而這里可以認(rèn)為glTranslate移動(dòng)的是坐標(biāo)原點(diǎn),glVertex中的點(diǎn)是相對(duì)最新的坐標(biāo)原點(diǎn)的坐標(biāo)值。

      glBegin(GL_TRIANGLES);              // 繪制三角形
          glVertex3f( 0.0f, 1.0f, 0.0f);      // 上頂點(diǎn)
          glVertex3f(-1.0f,-1.0f, 0.0f);      // 左下
          glVertex3f( 1.0f,-1.0f, 0.0f);      // 右下
      glEnd();                     // 三角形繪制結(jié)束

   在屏幕的左半部分畫完三角形后,我們要移到右半部分來畫正方形。為此要再次使用glTranslate。這次右移,所以X坐標(biāo)值為正值。因?yàn)榍懊孀笠屏?.5個(gè)單位,這次要先向右移回屏幕中心(1.5個(gè)單位),再向右移動(dòng)1.5個(gè)單位。總共要向右移3.0個(gè)單位。

      glTranslatef(3.0f,0.0f,0.0f);           // 右移3單位

   現(xiàn)在使用GL_QUADS繪制正方形。與繪制三角形的代碼相類似,畫四邊形也很簡單。唯一的區(qū)別是用GL_QUADS來替換了GL_TRIANGLES。并增加了一個(gè)點(diǎn)。我們使用順時(shí)針次序來畫正方形-左上-右上-右下-左下。采用順時(shí)針繪制的是對(duì)象的后表面。這就是說我們所看見的是正方形的背面。逆時(shí)針畫出來的正方形才是正面朝著我們的。現(xiàn)在這對(duì)您來說并不重要,但以后您必須知道。

      glBegin(GL_QUADS);                // 繪制正方形
          glVertex3f(-1.0f, 1.0f, 0.0f);      // 左上
          glVertex3f( 1.0f, 1.0f, 0.0f);      // 右上
          glVertex3f( 1.0f,-1.0f, 0.0f);     // 左下
          glVertex3f(-1.0f,-1.0f, 0.0f);      // 右下
      glEnd();                     // 正方形繪制結(jié)束
      return TRUE;                   // 繼續(xù)運(yùn)行
  }

   最后換掉窗口模式下的標(biāo)題內(nèi)容。

              if (keys[VK_F1])        // F1鍵按下了么?
              {
                   keys[VK_F1]=FALSE;
   // 若是,使對(duì)應(yīng)的Key數(shù)組中的值為 FALSE
                  KillGLWindow();     // 銷毀當(dāng)前的窗口
                  fullscreen=!fullscreen; // 切換 全屏 / 窗口 模式
                   // 重建 OpenGL 窗口(修改)
                  if (!CreateGLWindow("NeHe’s First Polygon Tutorial",
                       640,480,16,fullscreen))
                   {
                       return 0;
    // 如果窗口未能創(chuàng)建,程序退出
                  }

  Markus Knauer注:在《OpenGL紅寶書:OpenGL學(xué)習(xí)的官方指南,第一版》(OpenGL Programming Guide: The Official Guide to Learning OpenGL, Release 1, J. Neider, T. Davis, M. Woo, Addison-Wesley, 1993)一書中清楚的解釋了NeHe所指的在OpenGL中移動(dòng)的單位概念:“在OpenGL中真的有英寸和英里的區(qū)別嗎?答案是一句話?好揮小M甘雍推淥謀浠歡際俏薜ノ壞摹H綣胍眉粼?1.0到20.0米,英寸、公里等等之間的平面,在OpenGL中您無法做到。唯一的法則是您必須使用一致的度量單位。”
   在這一課中,我已試著盡量詳細(xì)的解釋與多邊形繪制有關(guān)的步驟。并創(chuàng)建了一個(gè)繪制三角形和正方形的OpenGL程序。如果您有什么意見或建議請(qǐng)給我電子郵件。如果您認(rèn)為有什么不對(duì)或可以改進(jìn),請(qǐng)告訴我。我想做最好的OpenGL教程并對(duì)您的反饋感興趣。
posted on 2007-12-05 16:16 sdfasdf 閱讀(1176) 評(píng)論(1)  編輯 收藏 引用 所屬分類: OPENGL

Feedback

# re: NEHE的OPENGL教程 第二課 多邊形 2007-12-06 15:21 學(xué)海一人
謝謝你  回復(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>
            久久国产精品电影| 亚洲毛片在线看| 久久在线免费观看| 久久国内精品自在自线400部| 国产视频丨精品|在线观看| 一本大道久久a久久综合婷婷| 亚洲人成人一区二区在线观看 | 欧美日韩中文在线观看| 欧美精品不卡| 国产精品日韩欧美综合| 国产欧美日韩精品在线| 在线播放日韩专区| 亚洲三级免费观看| 亚洲一级网站| 久久精彩视频| 欧美激情一二区| 亚洲永久在线观看| 久久av二区| 欧美人与禽性xxxxx杂性| 国产精品你懂的在线| 狠狠色狠狠色综合日日小说| 最新国产精品拍自在线播放| 亚洲一区久久| 牛人盗摄一区二区三区视频| 日韩午夜在线电影| 久久精彩免费视频| 欧美体内she精视频| 国内精品久久久| 亚洲精品国产系列| 久久久777| 日韩午夜av在线| 久久久久亚洲综合| 国产精品免费观看视频| 亚洲国产欧美一区二区三区同亚洲| 9人人澡人人爽人人精品| 久久精品国产精品| 一区二区日韩欧美| 久久人人看视频| 国产精品夜色7777狼人| 亚洲精品小视频在线观看| 欧美影院一区| 一区二区三区国产盗摄| 久久久久久日产精品| 国产欧美精品日韩精品| 在线亚洲伦理| 亚洲国产视频一区| 久久久久这里只有精品| 国产精品永久免费| 亚洲欧洲一区| 奶水喷射视频一区| 久久精品日产第一区二区| 国产欧美在线| 欧美一区视频| 亚洲一区二区在| 欧美美女日韩| 亚洲视频一区二区在线观看| 蜜臀久久99精品久久久久久9| 欧美一区二区啪啪| 国产色视频一区| 欧美一区二区免费观在线| 麻豆成人在线观看| 亚洲一区在线直播| 一区二区三区高清视频在线观看| 午夜亚洲视频| 一区二区av| 欧美日韩久久不卡| 国产亚洲精品久久久久婷婷瑜伽| 国产精品私拍pans大尺度在线| 久久久噜噜噜久久久| 美女免费视频一区| 毛片一区二区三区| 国产欧美综合在线| 久久伊人亚洲| a4yy欧美一区二区三区| 久久精品五月| 中文高清一区| 亚洲二区在线| 国产老女人精品毛片久久| 久久黄色影院| 久久久国产精品一区| 国产性猛交xxxx免费看久久| 亚洲人成网站在线播| 久久欧美肥婆一二区| 狠狠久久亚洲欧美专区| 亚洲国产日韩美| 国产精品久线观看视频| 欧美顶级少妇做爰| 欧美日韩一区三区| 欧美高清在线一区二区| 国产农村妇女精品一二区| 欧美成人r级一区二区三区| 快播亚洲色图| 久久综合色一综合色88| 欧美日韩在线不卡| 欧美暴力喷水在线| 欧美成人四级电影| 久久久久国产精品麻豆ai换脸| 亚洲国产成人在线播放| 欧美一级视频| 毛片一区二区三区| 欧美一区二区三区四区在线| 亚洲电影自拍| 欧美日韩黄色大片| 欧美日韩福利在线观看| 国产精品久久一级| 久久精品99| 最新国产の精品合集bt伙计| 美女国内精品自产拍在线播放| 亚洲久久一区二区| 国产精品播放| 亚洲国产精品一区二区www在线 | 9色精品在线| 老鸭窝亚洲一区二区三区| 久久久女女女女999久久| 欧美一区二视频| 亚洲理论在线观看| 欧美精品1区2区3区| 亚洲欧美在线免费| 欧美电影免费观看| 久久久噜噜噜| 国产乱码精品1区2区3区| 亚洲久久一区二区| 亚洲高清资源| 香港久久久电影| 亚洲欧美激情视频| 欧美日韩国产综合在线| 亚洲欧洲精品一区二区精品久久久| 国产在线成人| 欧美一级免费视频| 欧美一区二区视频在线| 国产精品成人观看视频免费 | 国产午夜精品一区二区三区视频 | 国产精品三区www17con| 亚洲靠逼com| 日韩一级二级三级| 欧美成人午夜影院| 欧美韩国一区| 欧美日韩精品| 毛片av中文字幕一区二区| 国产日本亚洲高清| 亚洲欧美日本另类| 亚洲欧美日韩综合aⅴ视频| 国产精品福利网| 亚洲手机视频| 欧美亚洲系列| 国产亚洲精品高潮| 久久久久久自在自线| 欧美成人精品| 亚洲日本免费电影| 欧美人与性禽动交情品| 一区二区三区高清在线| 亚洲直播在线一区| 国产午夜亚洲精品理论片色戒| 欧美一区二区三区免费视| 久久一区二区视频| 亚洲国产精品一区二区第四页av | 欧美精品久久一区二区| 亚洲每日在线| 亚洲欧美中文日韩在线| 国产麻豆精品在线观看| 久久国产欧美日韩精品| 欧美大片在线影院| 亚洲无玛一区| 国产精品亚洲综合一区在线观看 | 久久久91精品国产一区二区三区| 免费一级欧美片在线播放| 亚洲毛片一区二区| 国产精品一卡| 蜜臀av性久久久久蜜臀aⅴ| 亚洲乱码久久| 久久久久久欧美| 日韩视频免费在线观看| 国产精品久久久久一区二区三区共| 久久成人一区二区| 亚洲精品视频免费在线观看| 欧美一区二区三区的| 亚洲国产精品传媒在线观看 | 国产精品a久久久久| 欧美在线一级va免费观看| 亚洲国产精品热久久| 欧美一级视频| 亚洲美女免费视频| 国内精品国产成人| 国产精品久久国产精品99gif| 久久精品麻豆| 亚洲一区二区三区欧美 | 欧美专区在线| 在线视频亚洲欧美| 亚洲国产成人tv| 久久久久免费观看| 亚洲尤物影院| 日韩亚洲欧美成人| 精品福利免费观看| 国产精品社区| 欧美精品啪啪| 欧美高清在线精品一区| 久久久久久久综合狠狠综合| 亚洲欧美国产日韩中文字幕| 99国产精品视频免费观看| 亚洲成人资源|