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

  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>
            欧美电影在线免费观看网站| 亚洲影音一区| 久久久久一本一区二区青青蜜月| 国产精品影视天天线| 国产精品成人久久久久| 欧美激情一区在线| 91久久精品美女| 久久久一区二区三区| 久久久国产精品一区| 久久午夜激情| 亚洲免费观看高清完整版在线观看熊 | 99在线热播精品免费99热| 亚洲人成在线影院| 亚洲视频在线观看三级| 午夜视频在线观看一区二区| 国产精品你懂的| 国产欧美日韩在线播放| 影音先锋成人资源站| 亚洲人午夜精品免费| 亚洲自拍三区| 久久伊人一区二区| 日韩视频精品| 久久免费精品日本久久中文字幕| 日韩视频永久免费观看| 欧美日韩免费一区二区三区视频| 国产日韩精品一区二区三区| 在线观看欧美日韩国产| 一区二区日韩欧美| 免费的成人av| 中文亚洲欧美| 久久综合久色欧美综合狠狠 | 欧美顶级艳妇交换群宴| 国产精品国产三级国产aⅴ9色| 国内视频一区| 亚洲免费视频网站| 亚洲高清中文字幕| 性欧美xxxx大乳国产app| 欧美日韩激情小视频| 在线国产欧美| 久久久夜夜夜| 午夜日韩视频| 亚洲欧美日韩国产一区二区三区| 日韩视频―中文字幕| 嫩草成人www欧美| 国产女人水真多18毛片18精品视频| 日韩视频久久| 亚洲精品1区| 久久精品99国产精品日本| 欧美午夜剧场| 麻豆免费精品视频| 亚洲一区二区三区涩| 欧美日本亚洲| 欧美日韩精品免费在线观看视频| 欧美一级理论性理论a| 欧美日韩国产在线观看| 91久久综合亚洲鲁鲁五月天| 久久成人一区二区| 亚洲一品av免费观看| 欧美激情在线免费观看| 91久久久亚洲精品| 91久久精品一区二区三区| 欧美国产三区| av不卡在线| av成人免费在线观看| 欧美日韩系列| 午夜精品一区二区三区四区 | 91久久精品久久国产性色也91| 老司机精品导航| 久久青草久久| 国产精品黄视频| 欧美一级理论片| 夜夜嗨av色一区二区不卡| 韩国v欧美v日本v亚洲v| 久久成人免费| 久久亚洲精品一区| 亚洲日韩第九十九页| 日韩视频在线一区二区| 欧美午夜一区二区| 欧美一区二区精品久久911| 欧美一区二区日韩一区二区| 好吊妞**欧美| 亚洲欧洲日本专区| 欧美日韩一级黄| 久久精品国产亚洲a| 老牛影视一区二区三区| 一二美女精品欧洲| 午夜在线不卡| 亚洲成人在线免费| 99re66热这里只有精品4| 国产欧美va欧美va香蕉在| 欧美激情五月| 亚洲欧美三级在线| **性色生活片久久毛片| 亚洲精选大片| 国内偷自视频区视频综合| 亚洲欧洲日本国产| 国产欧美日韩91| 91久久夜色精品国产网站| 国产精品久久久久免费a∨| 久久综合国产精品| 国产精品视频成人| 亚洲视频二区| 一区二区三区在线不卡| 夜久久久久久| 亚洲国产精品一区二区第四页av| 一区二区毛片| 亚洲黄色视屏| 亚洲美女毛片| 一区二区三区偷拍| 老色鬼久久亚洲一区二区| 你懂的国产精品永久在线| 欧美日韩精品是欧美日韩精品| 欧美一区二区三区另类| 麻豆国产va免费精品高清在线| 亚洲性色视频| 美女91精品| 欧美wwwwww| 伊人久久噜噜噜躁狠狠躁 | 亚洲欧美日韩在线| 免费观看亚洲视频大全| 欧美视频一区二区三区…| 久久综合伊人77777| 国产精品swag| 亚洲美女av网站| 亚洲人体一区| 老司机久久99久久精品播放免费| 欧美一级片久久久久久久| 欧美日韩久久| 亚洲第一页在线| 国内自拍视频一区二区三区| 欧美日韩免费高清一区色橹橹| 亚洲欧美一级二级三级| 欧美精品久久久久久久免费观看 | 亚洲风情在线资源站| 新狼窝色av性久久久久久| 亚洲欧美日韩精品| 欧美亚一区二区| 艳女tv在线观看国产一区| 中文在线不卡视频| 欧美视频精品一区| 亚洲伊人久久综合| 久久一二三国产| 欧美日韩一区二区三区免费看| 亚洲二区在线观看| 亚洲国产精品高清久久久| 女同性一区二区三区人了人一| 亚洲第一网站免费视频| 免费亚洲电影在线观看| 欧美高清视频一区二区三区在线观看| 一区一区视频| 久久综合九九| 欧美国产欧美综合| 亚洲美女黄网| 国产精品乱码人人做人人爱| 国产精品99久久久久久久久久久久 | 美女在线一区二区| 国内精品视频在线播放| 久久久久久电影| 欧美成年人视频| 一区二区三区视频免费在线观看| 欧美日韩一区不卡| 欧美伊人久久| 亚洲国产成人高清精品| 9国产精品视频| 国产女主播一区| 另类亚洲自拍| 亚洲香蕉网站| 欧美电影免费观看网站| 亚洲性图久久| 久久国产视频网| 国产在线不卡精品| 欧美成人综合| 亚洲男同1069视频| 欧美ab在线视频| 亚洲欧美国产三级| 在线免费不卡视频| 欧美久久九九| 一区二区高清| 国产伦精品一区二区三区免费 | 99精品国产福利在线观看免费| 午夜精品久久久久| 亚洲成色精品| 国产自产女人91一区在线观看| 蜜臀av国产精品久久久久| 亚洲一区二区3| 欧美国产先锋| 久久蜜臀精品av| 中日韩高清电影网| 国产自产女人91一区在线观看| 欧美日韩国产成人在线91| 欧美专区亚洲专区| 在线一区免费观看| 亚洲国产日本| 六月天综合网| 欧美在线播放| 亚洲一区欧美二区| 99精品欧美一区二区三区| 黄色一区二区在线| 欧美体内she精视频| 欧美女同在线视频|