opengl三維程式設計

2021-06-22 00:02:53 字數 1393 閱讀 9705

void gluperspective(gldouble fovy,gldouble aspect,gldouble znear, gldouble zfar);

引數fovy定義視野在x-z平面的角度取值是[0.0,180.0]

引數aspect是投影平面寬度與高度的比率

引數znear和zfar分別是近遠裁剪面沿z負軸到視點的距離,它們總為正值。

預設情況下,視點在座標軸原點。

在三維空間中,乙個多邊形雖然有兩個面,但我們無法看見背面的那些多邊形,而一些多邊形雖然是正面的,但被其他多邊形所遮擋。如果將無法看見的多邊形和可見的多邊形同等對待,無疑會降低我們處理圖形的效率。在這種時候,可以將不必要的面剔除。 

首先,使用glenable(gl_cull_face);來啟動剔除功能(使用gldisable(gl_cull_face)可以關閉之) 

然後,使用glcullface來進行剔除。 

void glbindbuffer(glenum target, gluint buffer);

引數:target

指定要**的目標,是一符號常量,只能為gl_array_buffer, gl_element_array_buffer, gl_pixel_pack_buffer, gl_pixel_unpack_buffer。

buffer

指定快取類的名稱

描述:

當乙個快取類繫結到乙個目標上,之前為這個目標繫結快取類就是自動釋放。快取類命名為無符整數,其中0值被保留,不是每乙個目標都有預設的快取類。如果把buffer設定為0可以有效的釋放之前繫結的任何快取類。快取類的名稱和相應的快取類的內容是當前gl渲染上下文中shared display-list空間中的一部分,如果兩個渲染上下文共享快取類的名稱,只有當它們共享display lists。

void glbufferdata(glenum targe, glsizeiptr size,const glvoid* data, glenum usage);

引數:target

指定快取目標

size

以位元組為單位,指定快取類的大小

data

指定資料指標,用於初始化快取類

usage

指定期望的資料儲存使用方式,是如下一些符號常量gl_stream_draw,gl_stream_read,gl_stream_copy,gl_static_draw,gl_static_read,gl_static_copy,gl_dynamic_draw,gl_dynamic_read,gl_dynamic_copy。

描述:

為繫結了目標的快取類建立乙個新的資料儲存。

繼續學習中……

opengl三維觀察

1.相機 產生目標場景檢視的變換過程類似於用照相機進行拍照。用照相機進行拍照的步驟大致如下 把照相機固定在三腳架上,並讓它對準場景 檢視變換 對場景進行安排,使各個物體在 中的位置是我們所希望的 模型變換 選擇照相機鏡頭,並調整放大倍數 投影變換 確定最終 的大小 視口變換 完成這些步驟之後,就可以...

opengl三維幾何變換例項

include intmain int argc,char ar void display void init 以下例子加入到display方法中即可執行 opengl三維旋轉 繞平行於座標軸的軸旋轉 此例為原點繞經過 0,0,5 垂直於xz平面的旋轉軸進行旋轉 glmatrixmode gl mo...

QT與OpenGL之三維旋轉

效果 由於上傳大小的限制,只能製作短暫的效果。在開始前,你應該在pro中新增 libs glut.libglut32.lib 同時你也應該將這兩個庫加到qt的bin目錄下。glwidget.h ifndef glwidget h define glwidget h include include n...