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