五十六:Vertex Shader是什么,怎么計(jì)算?
頂點(diǎn)著色器是一段執(zhí)行在GPU上的程序,用來取代fixed pipeline中的transformation和lighting,Vertex Shader主要操作頂點(diǎn)。
Vertex Shader對(duì)輸入頂點(diǎn)完成了從local space到homogeneous space(齊次空間)的變換過程,homogeneous space即projection space的下一個(gè)space。在這其間共有world transformation, view transformation和projection transformation及l(fā)ighting幾個(gè)過程。
五十七:下列代碼在運(yùn)行中會(huì)產(chǎn)生幾個(gè)臨時(shí)對(duì)象?
string a = new string(“abc”); a = (a.ToUpper() + “123”).Substring(0, 2);
在C#中第一行是會(huì)報(bào)錯(cuò)的(Java中倒是可行)。
應(yīng)該這樣初始化:
string b = new string(new char[]{‘a’,’b’,’c’});
答案為:5個(gè)臨時(shí)對(duì)象
五十八:下列代碼在運(yùn)行中會(huì)發(fā)生什么問題?如何避免?
List ls = new List(new int[] { 1, 2, 3, 4, 5 }); foreach (int item in ls) { Console.WriteLine(item * item); ls.Remove(item); }
產(chǎn)生運(yùn)行時(shí)錯(cuò)誤,在 ls.Remove(item)這行,因?yàn)閒oreach是只讀的。不能一邊遍歷一邊修改。
五十九:Unity3D是否支持寫成多線程程序?如果支持的話需要注意什么?
僅能從主線程中訪問Unity3D的組件,對(duì)象和Unity3D系統(tǒng)調(diào)用
支持:如果同時(shí)你要處理很多事情或者與Unity的對(duì)象互動(dòng)小可以用thread,否則使用coroutine。
注意:C#中有l(wèi)ock這個(gè)關(guān)鍵字,以確保只有一個(gè)線程可以在特定時(shí)間內(nèi)訪問特定的對(duì)象