OpenGL開發筆記

2021-09-01 18:21:49 字數 1202 閱讀 1423

glorgho/gluperspective,在投影矩陣gl_projection中使用,glulookat在檢視矩陣

gl_modelview中使用

2. gluperspective的近景near必需大於0,不能等於0

3. 繪製元件的時候以(0,0,0)為基點,呼叫子函式的時候用glpushmatrix()和glpopmatrix()包裝後再平移旋轉,這樣的方法使用起來比較方便

3. 影響顯示效果的功能:顏色color-最基本的屬性;混合blend-通過alpha通道,支援透明和半透明;帖圖texture-如果是32位需要透明效果的貼圖需要開啟blend;光照light-與material屬性配合使用,開啟後顏色屬性失效,最終顏色由光照顏色和材質反射顏色共同決定

4. 如果開啟blend並且要使用透明效果,即使已開啟了深度檢測,仍然要手工遵循由深到淺的順序,否則透明效果會不正確

5. gltexenvf(gl_texture_env, gl_texture_env_mode, gl_modulate):

gl_modulate代表兩個顏色相乘,用於貼圖和光照混合,如果是gl_replace則完全不受光照影響

6. 如果兩個面重合,opengl不同的實現會有不同的處理,很有可能兩個面按隨機順序繪製,這種情況能免則免

7. 曲面的法線是對頂點進行設定的,系統會自動根據頂點法線計算中間點法線達到平滑過渡的效果,所以頂點法線的計算因以實體來計算,如圓球的法線為球心到頂點的連線,而不是三個頂點的向量的外積,如果用外積,反而會另畫出來的球不平滑。

8. 繪製長短軸為a,b的橢圓。頂點公式,x軸對應a,y軸對應b,頂點到圓心距離r,角度為q,r = a*b / sqrt((b*cos(q)^2 + (a * sin(q))^2), x = r*cos(q), y = r*sin(q);法線公式,法線角度n = rctg(- b / a * x / sqrt(a^2 - x^2)) + pi / 2,如果y < 0則n = -n,如果x = a,則n = 0,如果x = -a,則n = pi

8. gltranslate平移後法線不變,glrotate旋轉後法線跟著旋轉,兩者都能保證法線正確,但是glscale縮放後法線不變,在x,y,z同比縮放時法線正確,如果不同比縮放,法線會錯誤。

Go上的極簡OpenGL開發筆記(二)

之後的學習過程預設在原有 上修改完成 新增初始化 opengl的函式,列印 version initopengl 初始化 opengl 並且返回乙個初始化了的程式。func initopengl uint32 version gl.gostr gl.getstring gl.version log....

Go上的極簡OpenGL開發筆記(三)

我寫文章做教程看部落格找慕課什麼的都喜歡短而多的,基本一篇就一兩個知識點 庫和常量 600 main函式 func main initglfw 初始化gl執行環境 func initglfw glfw.window glfw.windowhint glfw.resizable,glfw.false ...

Go上的極簡OpenGL開發筆記(六)

啊這,opengl 這麼不火的麼 加上 go 在中國是不是屬於雙重小眾屬性 首先修改視窗為正方形 const width 800 height 800 資料點更改為正方形四個角 var float32 drawarrays函式更改繪製方式引數 gl.drawarrays gl.fan,0,int32...