graphics review

take back something from lost……

 

GLSL中的Uniform變量?

uniform變量是外部程序傳遞給shader的變量,因此在vfshader中不可以修改uniform變量,類似於c語言中的const變量。

 

openGL中有幾種緩衝?作用分別是什麼?

幀緩衝 Frame Buffer:(顏色緩存、模板緩存、深度緩存)

頂點緩存:用於緩存頂點數據

元素緩衝:用於緩存頂點序號數據

 

空間變換矩陣爲什麼是四階的?如何構造?

根據矩陣和向量的運算特性,三階矩陣只能實現縮放和其次空間旋轉,所以需要額外的一行一列來實現平移操作。

//如何構造?

旋轉物體的三種方式分別是什麼?都有什麼優缺點?

https://blog.csdn.net/zhaotianyu950323/article/details/79955805

矩陣旋轉、歐拉角旋轉、四元數

矩陣旋轉 
優點: 旋轉軸可以使任意向量;
缺點: 旋轉其實只需要知道一個向量 + 一個角度, 一共4個值的信息,但矩陣卻使用了16個元素;
而且在做乘法操作時也會增加計算量,造成了空間和時間上的一些浪費;

歐拉旋轉 
優點: 很容易理解,形象直觀;表示更方便,只需要3個值(分別對應x,y,zx,y,z軸的旋轉角度);但依照其他博主的理解,她還是轉換到了3個 3*3的矩陣變換,效率不如四元數;
缺點: 之前提到過這種方法是要按照一個固定的座標軸的順序旋轉的,因此不同的順序會造成不同的結果;
會造成萬向節鎖(Gimbal Lock) 現象。這種現象的發生就是由於上述固定座標軸旋轉順序造成的。理論上,歐拉選擇可以靠這種順序讓一個物體指到任何一個想要的方向, 但如果在旋轉中不幸讓某些座標軸重合了就會發生萬向節鎖,這時候就會丟失一個方向上的旋轉能力,也就是說在這種狀態下我們無論怎麼旋轉(當然還是按照原先的順序)都不可能得到某些想要的旋轉效果,除非我們打破原先的旋轉順序或者同時旋轉3個座標軸。這裏有個歐拉旋轉可以直觀的理解下;
由於萬向節鎖的存在,歐拉旋轉無法實現球面平滑插值;

四元數旋轉 
優點: 可以避免萬向節鎖現象;
只需要一個4維的四元數就可以執行繞任意過原點的向量的旋轉,方便快捷,在某些實現下比旋轉矩陣效率更高;
可以提供平滑插值;
缺點: 比歐拉選擇稍微複雜了一點點,因爲多了一個維度;
理解更困難,不直觀
 

什麼是萬向鎖?

見上一條。。。

什麼是多級漸進紋理?對於遊戲優化有什麼作用?

多級漸變紋理,是對一張目標紋理進行減精度採樣,生成分辨率逐漸降低的紋理序列。

沒有mipmap的問題:

(以下回答來自知乎etnlGD的回答:https://www.zhihu.com/question/66993945?sort=created

在不使用mipmap的情況下使用高精度貼圖,性能損失主要在於texture cache會很難命中,因爲相鄰pixel採樣的texel都是空間不連續的,對cache非常不友好,因此會造成遠處平面像素的閃點。

此時,一個pixel像素對應問題上的很多紋素,那麼如何來從多個texel中得到該像素的顏色值?

不管一個pixel覆蓋多少個texel,point採樣1個,bi-linear採樣4個,tri-linear採樣8個,anisotropic則可能會採樣更多。mipmap就是爲了解決1個像素覆蓋很多個texel的情況,相當於離線計算好1個pixel覆蓋多個texel的結果,存在mipmap中。mipmap1是1個覆蓋4個,mipmap2是1個覆蓋16個······

正面作用:

mipmap提供了預處理好的多重採樣數據,主要目的是改善平面渲染中的表現,同時也提高了紋理採樣時的命中率。

反面作用:

提前生成的貼圖序列會佔用紋理總內存33%的額外內存

什麼是四元數(quaternion)?

https://blog.csdn.net/candycat1992/article/details/41254799

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章