C (11) OpenGL座標系及繪製多個矩形

2021-08-09 09:54:02 字數 2545 閱讀 9067

解壓得到5個檔案:glut.h,glut.dll,glut32.dll,glut.lib,glut32.lib。

(2)安裝glut庫。

在vs2015的安裝路徑下的/vc/include/下新建乙個資料夾gl,然後複製glut.h到這個資料夾下,

然後複製glut.lib和glut32.lib到my_vs_root/vc/lib/下,最後複製glut.dll和glut32.dll到系統的dll目錄下:c:\windows\system32資料夾內(32位系統)或和c:\windows\syswow64(64位系統)。

(3)opengl座標系講解:

opengl中,其座標系如圖

所示:

而想要在此座標系下繪製矩形時,便需要結合座標給出正方形對角線的左下和右上的兩個座標(x1,y1,x2,y2)即可,比如要繪製下圖

的矩形,便需要給出的座標為(-1,

由於我們本文要處理的資料數量為50個,所以人為將視窗分成了乙個5行

10列的劃分,在程式設計時我們的處理方式為對視窗進行一行一行的分別繪製矩形,因此關鍵便在於每一行的第乙個初始的座標的確定,當每行的第乙個矩形確定後,由於處於同一行的矩形的兩個

y軸座標都是相同的,因此只需要從左到右依次對每個矩形的兩個

x軸座標進行進行逐加即可。

所以在實際程式設計中,繪製時有以下幾個步驟:(陣列下標為i(

i<50))

(1) 得出螢幕上5行的每一行的初始正方形座標(正方形大小為

0.2*0.2)

(2)對當前矩形位於第幾行

l進行判斷:

由於是乙個包含50個元素的一位陣列,因此利用下標i除以

10,便可知道行數

,因此有:

l = i/10

(3)繪製當前行的第

k個座標:

由於行數l的範圍為0至

4,因此,假設計算第一行的初始矩形座標為(

x1,y1,x2,y2

),要計算第一行的第

k個正方形的座標,便有:

(x1 + (

i-n)

*0.2 ,  y1 , x2 +

(i-n

)*0.2 , y2

)(n=0,10,20,30,40)

n為相應的行數乘以

10得到的值,因此只要得知每一行的初始矩形座標,便可計算每一行的其餘正方形座標了。

(4)開啟vs2015建立乙個win32控制台程式->選擇空專案->完成。

編寫**如下:

#include #include using namespace std;

void mydisplay(void)

; int dislength = 50; //共50個元素,5行10列,

int res = 0; //用於判斷矩形在第幾行

glclear(gl_color_buffer_bit); //清除。gl_color_buffer_bit表示清除顏色,glclear函式還可以清除其它的東西,

//glrectf(x1, y1, x2, y2);//畫乙個矩形。四個引數分別表示了位於對角線上的左下和右上兩個點的橫、縱座標。

//第1行左起第乙個點(-1,0.8,-0.8,1),為座標初始點賦值

x1 = -1; y1 = 0.8, x2 = -0.8, y2 = 1;

for (int i = 0; i < 50; i++)

}else

}} glflush();//保證前面的opengl命令立即執行(而不是讓它們在緩衝區中等待)

}int main()

; glutinitdisplaymode(glut_rgb | glut_single);//設定顯示方式,其中glut_rgb表示使用rgb顏色,與之對應的還有glut_index(表示使用索引顏色)

glutinitwindowposition(100, 100);//設定視窗在螢幕中的位置。

glutinitwindowsize(600, 600);//設定視窗大小

glutcreatewindow("opengl多矩形框繪製");//視窗標題

glutdisplayfunc(&mydisplay);//設定乙個函式,當需要進行畫圖時,這個函式就會被呼叫

glclearcolor(0.5f, 0.5f, 0.5f, 1.0f); //設定背景為灰色

glutmainloop();//進行乙個訊息迴圈

return 0;

}

(5)生成視窗:

OpenGL 世界座標系

世界座標系 在opengl中,世界座標系是以螢幕中心為原點 0,0,0 且是始終不變的。你面對螢幕,你的右邊是x正軸,上面是y正軸,螢幕指向你的為z正軸。長度單位這樣來定 視窗範圍按此單位恰好是 1,1 到 1,1 即螢幕左下角座標為 1,1 右上角座標為 1,1 這是採用了歸一化的結果 當前繪圖座...

OpenGL 座標系詳解

opengl最終將圖形渲染到的裝置螢幕本質上是2d的,我們對圖形進行渲染的過程就是將3d場景轉換為最終的2d場景的過程。opengl中定義的點從使用者構造模型的區域性座標系,經過模型變換轉為世界座標系,再經過視變換轉換為相機座標系,再經過投影變換轉換為裁剪座標系,再進行透視除法轉換為規範化裝置座標系...

OpenGL中的座標系與矩陣

1.opengl圖形管線 顯示流程 模型變換 modeling transformation mc 模型座標 child parent wc 世界座標 標準c語言的矩陣為行主序,即m i j 表示第i行 第j列。opengl中的矩陣為 列主序,即m i j 表示第i列 第j行。以下所有矩陣都為列主序...