#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,譯名 開放圖形庫或者 開放式圖形庫 是...