ArcEngine OpenGL之五 三角形上色

2021-04-13 08:05:19 字數 1620 閱讀 2716

三角形上色

上一課中我教給您三角形的繪製方法。這一課我將教您給三角形新增兩種不同型別的著色方法。使用平滑著色(**ooth coloring)將三角形的三個頂點的不同顏色混合在一起,建立漂亮的色彩混合。

我們只要修改第二課中的onafterdraw()函式就可以了。

private void onafterdraw(isceneviewer pviewer)

1、三角形平滑著色

如果您還記得上節課的內容,這段**在螢幕的左半部分繪製三角形。這一行**是我們第一次使用命令glcolor3f( r, g, b )。括號中的三個引數依次是紅、綠、藍三色分量。取值範圍可以從0.0到1.0。類似於以前所講的清除螢幕背景命令。

接下來的一行**設定三角形的第乙個頂點(三角形的上頂點),並使用當前顏色(紅色)來繪製。從現在開始所有的繪製的物件的顏色都是紅色,直到我們將紅色改變成別的什麼顏色。

設定顏色**:

gl.glbegin(gl.gl_********s);

gl.glcolor3ub(255, 0, 0);

gl.glvertex3f((float)glx, (float)gly, (float)glz);

gl.glcolor3ub(0, 255, 0);

gl.glvertex3f((float)glx1, (float)gly1, (float)glz1);

gl.glcolor3ub(0, 0, 255);

gl.glvertex3f((float)glx2, (float)gly2, (float)glz2);

gl.glend();

glend()出現後,三角形將被填充。但是因為每個頂點有不同的顏色,因此看起來顏色從每個角噴出,並剛好在三角形的中心匯合,三種顏色相互混合。這就是平滑著色。

效果如下:

2、三角形一次性著單色:

gl.glcolor3ub(0, 0,255)

一次性將顏色設定為藍色。

現在我們繪製乙個單調著色——藍色的三角形。最重要的是要記住,設定當前色之後繪製的所有東東都是當前色的。以後您所建立的每個工程都要使用顏色。即便是在完全採用紋理貼圖的時候,glcolor3f仍舊可以用來調節紋理的色調。等等...,以後再說吧。

我們必須要做的事只需將顏色一次性的設為我們想採用的顏色(本例採用藍色),然後繪製場景。每個頂點都是藍色的,因為我們沒有告訴opengl要改變頂點的顏色。最後的結果是.....全藍色的三角形。再說一遍,順時針繪製的正方形意味著我們所看見的是三角形的背面。   

gl.glcolor3ub(0, 0,255);

gl.glbegin(gl.gl_********s);

gl.glvertex3f((float)glx, (float)gly, (float)glz);

gl.glvertex3f((float)glx1, (float)gly1, (float)glz1);

gl.glvertex3f((float)glx2, (float)gly2, (float)glz2);

gl.glend();

}效果如下:

在這一課中,我試著盡量詳細的解釋如何為您的opengl多邊形新增單調和平滑的著色效果的步驟。改改**中的紅綠藍分量值,看看最後有什麼樣的結果。

求大三角形中三角形個數

一道筆試程式設計題要求求乙個大三角形中所有小三角形的個數,大約是下面這種情況 首先想到是的將問題由求邊長為n的三角形個數 求邊長為n 1的三角形個數 求邊長為1的三角形個數 1,回溯求得所有三角形個數。但是再仔細一看因為有重疊三角形和倒置的三角形,所以這個方法不可行。接著找到三角形個數由三部分組成 ...

三角形面積

算是自己第一道正式寫的演算法幾何吧,先從簡單的開始吧,加油!描述 給你三個點,表示乙個三角形的三個頂點,現你的任務是求出該三角形的面積 輸入 每行是一組測試資料,有6個整數x1,y1,x2,y2,x3,y3分別表示三個點的橫縱座標。座標值都在0到10000之間 輸入0 0 0 0 0 0表示輸入結束...

幸運三角形

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 話說有這麼乙個圖形,只有兩種符號組成 或者 圖形的最上層有n個符號,往下個數依次減一,形成倒置的金字塔形狀,除第一層外 第一層為所有可能情況 每層形狀都由上層決定,相鄰的符號相同,則下層的符號為 反之,為 如下圖所示 n 3 時...