Nehe的OpenGL的第8, 9課的筆記

2021-05-25 04:57:02 字數 1252 閱讀 1907

混色的定義

將要繪製的物體的想色顏色, 與螢幕上相同位置的畫素顏色相互混合.

正確的繪製透明物件的方法

首先, 繪製所有不透明物件

然後, 關閉深度測試

最後, 從遠及近的繪製透明物件

混色方法

glcolor4f(1.0f, 1.0f, 1.0f, 0.5f)

以全亮度繪製此物體, 並對其進行50%的alpha混合

glblendfunc(gl_src_alpha, gl_one)

設定採用的混合型別

glenable(gl_blend)

啟用混合

gldisable(gl_depth_test)

關閉深度測試

紋理貼圖的alpha混合

用於紋理貼圖的alpha引數, 可以像顏色一樣從紋理貼圖中讀取

在載入所需的材質時, 取得去alpha引數, 然後在呼叫glteximage2d時, 使用gl_rgba的顏色搭配格式

星星旋轉著接近圓心

重置模型觀察矩陣

glloadidentity

移入螢幕15.0f

gltranslatef(0.0f, 0.0f, -15.0f);

傾斜視角(修改視線與xy平面的夾角)

glrotatef(view, 1.0f, 0.0f, 0.0f)

計算星星的位置(先旋轉, 再移動, 實現旋轉中接近圓心的效果)

glrotatef(angle, 0.0f, 1.0f, 0,0f)(繞旋轉旋轉)

gltranslatef(dist, 0.0f, 0.0f)(接近圓心)

將座標系方向, 恢復為標準狀態(逆序反方向操作)

glrotatef(-angle, 0.0f, 1.0f, 0.0f)

glrotatef(-view, 1.0f, 0.0, 0.0f)

旋轉星星

glrotatef(spin, 0.0f, 0.0f, 1.0f)

繪製星星

glbindtexture(gl_texture_2d, texture)

glcolor4ub(r, g, b, 255)

glbegin(gl_quads)

gltexcoord2f(0.0f, 0.0f); glvertex3f(-1.0f, -1.0f, 0.0f)

...glend()

OpenGL第8,9講小結

這兩節,透明度和物體的3d運動,主要集中在第9講,因為第9講也用到了通過alpha值來調整透明度的地方。因為要模擬星星,所以要建立的四邊形需要很多,例子中建立了50個正方形。因為每個星星的屬性都差不多,所以選擇了用結構體來迴圈建立。感覺有點像物件導向的思路。為了讓星星在翻轉的時候不至於由麵變成一條線...

Nehe的OpenGL框架 MFC版

nehe的幾個opengl框架都是win32 sdk版本的,我現在需要在mfc下學習opengl,今天看了他寫的第乙個opengl框架,就在mfc中實現了下。為了簡單起見,把全屏那部分就拋棄掉了,畢竟重點不在這上面,而且mfc要實現這個全屏的功能也不像sdk那麼容易。protected boolse...

Nehe的OpenGL框架 MFC版

nehe的幾個opengl框架都是win32 sdk版本的,我現在需要在mfc下學習opengl,今天看了他寫的第乙個opengl框架,就在mfc中實現了下。為了簡單起見,把全屏那部分就拋棄掉了,畢竟重點不在這上面,而且mfc要實現這個全屏的功能也不像sdk那麼容易。opengldemoview.h...