Learn1 彩色三角形

2021-08-01 12:05:04 字數 2271 閱讀 1923

#include 

#include

/*learn1:本例在黑色的背景下繪製乙個彩色的三角形!

opengl程式的典型的程式結構:

首先初始化,包括對 glut庫的初始化和對視窗的設定及顯示模式的設定。

第二,建立視窗。

第三,自己創作的核心部分。

第四, glutmainloop 進入glut事件處理迴圈。

第五,下面我們轉到我們的創作核心。

1).background這個函式很簡單, 只有一行語句。glclearcolor中的四個引數分別是紅、綠、藍和alpha值。

這些值定義了視窗的顏色,這些值的範圍在[0, 1]之間,預設值均為0。你可以改變這些值,觀察背景色彩的變化。

2).glclear 將buffers設定為預先設定的值。引數gl_color_buffer_bit表明現在可以向buffer中寫入顏色值。

3).glbegin和glend是一一對應的。這兩個函式限制了一組或多**元的頂點定義。在這兩個函式中間就是你所繪製

的由多個頂點組成的圖元,函式的引數表明了所繪製的圖元的型別。本例中的gl_********s表明所繪製的圖形為三角形。

4).glshademodel選擇平坦或光滑漸變模式。gl_smooth為預設值,為光滑漸變模式, gl_flat為平坦漸變模式。

5).glcolor設定當前顏色,後面跟的數字為引數個數, 3表明有三個引數, 分別為紅、 綠、 藍, 4則多乙個引數alpha。

緊跟數字後面的字母表示資料型別。本例中的glcolor3f表示三個引數,資料型別為glfloat。

6).glvertex指定頂點。同樣函式明中的數字表明引數個數。引數分別為 x, y或x、 y、 z。緊跟數字後面的字母表示資料型別。

本例中glvertex2f表明兩個引數,資料型別為 glfloat。視窗的中心為原心,座標為( 0, 0, 0)。橫座標向左為負,向右為正;

縱座標向上為正,向下為負; z座標向螢幕裡為負,螢幕外為正,座標系符合右手定則。

現在你將main函式中的glutreshapefunc(myreshape); 注釋掉,任意改變三角形頂點的座標你會發現視窗的最左邊,

最右邊的x值分別為-1和1, 而視窗的最上端, 最下端的y值分別為1和-1。 由此可見glvertex中座標的值實際上是和視窗的大小成倍數的關係。

好了,現在恢復原來的程式。

7).glflush迫使opengl函式在有限時間裡執行。glflush清空所有buffer,使所有發出的命令能在規定的時間內執行。

一定不能忘記這一條語句。只有加了這一句,前面的命令才能執行。myreshape 改變視窗的大小。

8).glviewport( glintx, glinty, glsizeiwidth, glsizeiheight) 設定視口。 視口是乙個矩形, x, y為視口左下角的

座標,以畫素為單位,預設值為( 0 , 0)。 width和height分別為視口的寬和高。 opengl context第一次貼到視窗上時

width和height分別設定成視窗的大小。

9).glmatrixmode 指明哪乙個矩陣為當前矩陣。本例中 gl_projection指明投影矩陣堆疊為隨後的矩陣操作的目

標。 gl_modelview指明模型視景矩陣。

10).glloadidentity將當前矩陣置換為單位陣。

11).gluortho2d( gldouble left, gldouble right, gldouble bottom, gldouble top)定義二維正視投影矩陣。

left,right分別設定左右垂直切平面的座標, bottom, top分別設定上下垂直切平面的座標。現在你可能對這幾個引數的意義還不是很清楚。

我們現在將myreshape 函式glloadidentity();後面所有的語句注釋掉,

加上gluortho2d(-1.5 , 1.5 , -1.5 , 1.5);改變三角型的座標及gluortho2d中的數值, 你就可以清楚的理解gluortho2d中數值的含義。

*/

數字三角形 1

不能傻傻的用普通遞迴 會超時,因為有大量的重複計算。需要改進,每個結果一旦算出來就存起來,下次需要用的時候就直接呼叫。改進成為記憶遞迴型動歸程式 include include using namespcae std define max 101 int d max max int n int ma...

求大三角形中三角形個數

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

Qt實現 QOpenGL繪製彩色三角形

目錄 1 qopengl介紹 2 效果 3 主要 介紹 4 全部 qopenglwidget類封裝了opengl,比起原生的opengl,使用起來很方便。只需要讓子類繼承qopenglwidget。opengl 英語 open graphics library,譯名 開放圖形庫或者 開放式圖形庫 是...