學習OpenGL (四) 3D空間中的三角形

2021-08-15 17:11:10 字數 1644 閱讀 6721

gl_********s圖元通過連線三個頂點繪製三角形,得到如圖所示的三角形

頂點的指定次序以及方向的組合稱為環繞,圖中三角形是被認為具有順時針方向的環繞。

在預設情況下,opengl認為逆時針方向環繞的一面是多邊形的正面,因此圖中的三角形為圖形的反面。

如果想改變opengl這一預設行為,可以呼叫如下函式

glfrontface(gl_cw);  // gl_cw告訴opengl順時針環繞的多邊形被認為是正面
重新恢復為逆時針

glfrontface(gl_ccw);  // gl_ccw告訴opengl逆時針環繞的多邊形被認為是正面,即預設情況
使用gl_********_strip圖元,可以繪製一串相連的三角形。

構建當前三角形的頂點的連線順序依賴於要和前面已經出現過的2個頂點組成三角形的當前頂點的序號的奇偶性(如果從0開始):

如果當前頂點是奇數:組成三角形的頂點排列順序:t = [n-1 n-2 n].

如果當前頂點是偶數:組成三角形的頂點排列順序:t = [n-2 n-1 n].

以上圖為例,第乙個三角形,頂點v2序號是2,是偶數,則頂點排列順序是v0,v1,v2。第二個三角形,頂點v3序號是3,是奇數,則頂點排列順序是v2,v1,v3,第三個三角形,頂點v4序號是4,是偶數,則頂點排列順序是v2,v3,v4,以此類推。

這個順序是為了保證所有的三角形都是按照相同的方向繪製的,使這個三角形串能夠正確形成表面的一部分。對於某些操作,維持方向是很重要的,比如剔除。

注意:頂點個數n至少要大於3,否則不能繪製任何三角形。

使用gl_********_fan圖元,可以建立一組圍繞乙個中心點的相連三角形。

gl_********_fan與gl_********_strip類似,不過它的三角形的頂點排列順序是t = [n-1 n-2 n].各三角形形成乙個扇形序列。

3D空間變換

它相當於是平移變換 t 和旋轉變換 r 的復合,等距變換前後長度,面積,線線之間的角度都不變。自由度 6 旋轉變換r自由度 3,平移變換t自由度 3 t rt0t 1 t begin r t 0 t 1 end t r0t t1 4x4矩陣 eigen isometry3d eigen isomet...

3D基礎 3D座標變換在OpenGL 中的實踐

在計算機圖形學中,變換矩陣是非常基礎也是非常重要的知識,在許多資料中,只是羅列出一堆矩陣公式,圖表等等,這很難給人感性的認識,特別是初學者,筆者結合 opengl 這樣乙個非常流行的圖形庫,以實踐的方式闡述在 3d變換矩陣中最簡單的三種 平移 縮放以及旋轉。這裡有一些前提知識,就是需要了解線性代數一...

OpenGL實現3D自由變形

筆者介紹 姜雪偉,it公司技術合夥人,it高階講師,csdn社群專家,特邀編輯,暢銷書作者,已出版書籍 手把手教你架構3d遊戲引擎 電子工業出版社和 unity3d實戰核心技術詳解 電子工業出版社等。以前有朋友問我,關於變形動畫是如何實現的,實現方式主要有兩種,一種是通過美術人員利用max工具自己調...