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

  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>
            久久精品一区中文字幕| 亚洲精品影视| 久久久久久网址| 欧美成人高清视频| 一区二区三区**美女毛片| 亚洲精品乱码久久久久久日本蜜臀 | 免费日韩成人| 欧美日韩亚洲网| 久久久99精品免费观看不卡| 免费成人高清视频| 欧美一区二区视频网站| 欧美高清在线| 久久久国产成人精品| 欧美xart系列高清| 久久爱www.| 欧美日韩亚洲一区三区| 免费成人高清视频| 国产精品卡一卡二| 亚洲精品欧美极品| 亚洲精品小视频在线观看| 91久久久国产精品| 欧美伊人久久| 久久aⅴ国产欧美74aaa| 欧美性大战久久久久久久蜜臀| 可以免费看不卡的av网站| 国产欧美二区| 国产精品99久久久久久久久久久久 | 欧美国产日韩a欧美在线观看| 老牛影视一区二区三区| 国产精品久久久久久久一区探花| 欧美激情视频在线播放| 在线激情影院一区| 久久久噜噜噜久噜久久| 久久亚洲视频| 亚洲黄网站黄| 欧美另类人妖| 亚洲欧美国产va在线影院| 欧美一站二站| 伊人久久综合97精品| 欧美69wwwcom| 午夜精品亚洲| 久久夜色精品一区| 亚洲免费高清| 国产精品视频一二三| 久久久亚洲午夜电影| 亚洲精品久久嫩草网站秘色| 香蕉成人伊视频在线观看| 国产在线视频欧美| 欧美日韩在线三级| 久久国产一二区| 一区二区三区高清| 欧美成人久久| 久久亚洲春色中文字幕| 一本久久综合亚洲鲁鲁| 红桃视频欧美| 国产精品一区二区你懂的| 久久国产精品久久久久久电车| 亚洲黄色av一区| 国产亚洲精品一区二区| 欧美三级韩国三级日本三斤| 久久视频一区二区| 久久成人综合视频| 午夜精品一区二区三区在线播放| 亚洲毛片av| 日韩亚洲欧美高清| 亚洲九九精品| 99国内精品久久| 日韩网站在线观看| 99国产精品视频免费观看| 亚洲精华国产欧美| 亚洲成人在线视频播放| 欧美成ee人免费视频| 亚洲福利电影| 亚洲欧洲精品一区二区三区| 欧美好骚综合网| 亚洲青色在线| 亚洲一区二区三区精品在线观看| 日韩午夜在线播放| 午夜视频久久久| 久久米奇亚洲| 欧美剧在线观看| 国产精品无码专区在线观看| 国产日韩精品一区观看| 亚洲大胆人体在线| 99pao成人国产永久免费视频| 亚洲女人天堂成人av在线| 欧美一区在线直播| 亚洲国产精品日韩| 亚洲主播在线| 欧美日韩美女在线观看| 国产一区二区三区日韩| 亚洲精选成人| 麻豆国产精品va在线观看不卡| 91久久视频| 美女福利精品视频| 国产精品色在线| 中日韩高清电影网| 欧美国产综合| 小处雏高清一区二区三区| 亚洲国产高潮在线观看| 欧美一区永久视频免费观看| 欧美精品一区二区久久婷婷| 黑人操亚洲美女惩罚| 亚洲一卡二卡三卡四卡五卡| 亚洲国产精品一区二区尤物区 | 久久亚洲精品一区| 欧美一区二区三区婷婷月色| 国产精品v一区二区三区| 亚洲一级在线| 亚洲永久免费| 国内成+人亚洲| 久久综合给合| 欧美jjzz| 亚洲校园激情| 欧美在线观看视频一区二区三区 | 一区二区国产日产| 国产精品有限公司| 久久久国产一区二区三区| 久久国产一区二区三区| 亚洲成色777777在线观看影院| 欧美va天堂| 欧美日本高清一区| 欧美在线视频免费| 久久男女视频| 亚洲一区二三| 久久久久.com| 亚洲欧美激情视频在线观看一区二区三区| 99在线观看免费视频精品观看| 国产精品video| 欧美激情按摩在线| 国产欧美一区二区三区久久| 欧美黄色网络| 国产一区欧美| 亚洲欧美第一页| 亚洲一二三区视频在线观看| 久久久久久69| 亚洲一级片在线看| 欧美精品在欧美一区二区少妇| 国产精品乱码妇女bbbb| 欧美va天堂在线| 在线不卡中文字幕播放| 欧美亚洲综合网| 欧美一区二区黄| 国产伦精品一区二区三区在线观看 | 久久er99精品| 久久精品日韩一区二区三区| 国产精品久久波多野结衣| 亚洲夜间福利| 欧美中文日韩| 精品成人一区| 美日韩精品视频| 欧美激情无毛| 中文一区二区在线观看| 欧美剧在线观看| 亚洲女性裸体视频| 久久精品免费播放| 亚洲电影免费在线| 欧美乱大交xxxxx| 亚洲精品久久久久久下一站| 亚洲你懂的在线视频| 国产日韩欧美自拍| 久久综合成人精品亚洲另类欧美| 欧美成人69av| 亚洲午夜精品视频| 国产综合色一区二区三区| 欧美成人网在线| 欧美一区二区三区的| 亚洲国产综合91精品麻豆| 亚洲一区二区精品在线观看| 韩国三级电影一区二区| 欧美精品成人| 久久综合久久综合这里只有精品| 99精品视频免费观看视频| 米奇777超碰欧美日韩亚洲| 亚洲调教视频在线观看| 亚洲片区在线| 狠狠色噜噜狠狠狠狠色吗综合| 欧美日韩亚洲一区二区三区四区| 亚洲欧美综合精品久久成人| 亚洲精品久久嫩草网站秘色 | 一二三区精品| 亚洲精品免费网站| 日韩一区二区精品在线观看| 亚洲欧美日韩在线综合| 亚洲免费播放| 久久se精品一区二区| 欧美成人一区二区三区| 亚洲精选一区二区| 久久免费国产| 国产日本亚洲高清| 一区二区三区 在线观看视频| 久久久久久久91| 一区二区三区高清在线观看| 久久人人爽人人爽爽久久| 国产精品麻豆va在线播放 | 欧美日韩高清在线观看| 黄色日韩网站| 欧美一区二区啪啪| 亚洲免费成人av电影| 猫咪成人在线观看|