viewport是用來設定當前渲染上下文的視口:viewport(int x, int y, int width, int height)。
其中(x,y)是以畫素為單位,指定視窗的左下角位置,width、height是視口矩形的寬度和高度,根據視窗的實時變化重繪視窗。
在opengl中,視窗座標都是以左下角為(0,0),向右為x正方向,向上為y正方向,如下圖所示:
做乙個簡單的範例,先繪製乙個立方體,立方體的六個面顏色不一樣:
private
void
draw
(sharpgl.opengl gl)
效果如下:
然後利用viewport,將視窗分成四塊區域視窗,分別:左上視窗顯示立方體上檢視,左下視窗顯示立方體下檢視,右上視窗顯示立方體左檢視,右下視窗顯示立方體右檢視:
private
void
openglcontrol1_opengldraw
(object sender,
rendereventargs args)
不同檢視顯示程式:
private
void
top_view_show
(sharpgl.opengl gl)
//上檢視
private
void
bottom_view_show
(sharpgl.opengl gl)
//下檢視
private
void
left_view_show
(sharpgl.opengl gl)
//左檢視
private
void
right_view_show
(sharpgl.opengl gl)
//右檢視
加上幾個按鍵觸發,觸發各檢視顯示與隱藏,切換立方體的視角等操作:
private
void
key_press
(object sender,
keypresseventargs e)
最終效果如下:
測試程式在這裡:sharpgl測試範例
使用c 包裝c
今天公司讓使用c 包裝c 提供c 的介面給客戶使用,現在記錄一下實現過程。對你的vs進行如上改動便可。3 註冊。關於註冊我上面說的那個部落格已經非常清楚了,這裡不再贅述。上面說的是一些硬性的條件。除了這些之外還有一些值得注意的是 dll檔案的存放位置以及需要的檔案。c 生成的dll檔案包括 dll和...
C 使用extern C 簡單使用
先說一下函式過載,c 之所以會進行函式過載,是因為對函式名進行二次修飾 重新命名 在c檔案中寫好的程式,c 引入過來,卻沒法使用提示 無法連線的外部符號,那是因為c 按照c 的函式命名機制來尋找函式的實現.第一種情況 檔案為 test.h void show 進行了函式宣告檔案 test.c inc...
c和c 混合使用
我們編寫 經常需要c和c 混合使用,為了使 c 和 c 保持互相相容的過程呼叫介面,需要,為了簡化,從而定義了兩個巨集方面我們使用 1.在 c 裡加上 extern c 作為符號宣告的一部分。2.begin decls 和 end decls 在c語言 中標頭檔案中,充斥著下面的 片段 begin ...