本文參考webgl: up and running by tony parisi 中譯本:webgl入門指南
github上的源**:
webgl就是乙個服用了興奮劑的繪製庫。要知道他爸爸是opengl es,他爺爺是opengl。
畫布及繪製上下文
所有的webgl呈現都發生在乙個上下文環境中,這是乙個提供了所有webgl開發介面的js的dom物件。
乙個webgl程式首先需要乙個關聯了dom的畫布和有這個畫布衍生出來的上下文環境。
1、乙個canvas元素
2、乙個gl的上下文,通過dom獲取
function initwebgl(canvas)
catch(e)
return gl;
}
繪製圖元
利用上面準備好的工具把圖元繪製到視口中展現給觀眾。
3、繪製函式
// draw the scene
function draw(gl, obj)
到這裡
著色器規定圖元如何被繪製。著色器在webgl是必須的,它是一些可以供gpu執行的**段。這也就意味著電腦上要執行webgl的程式就要有gpu,沒有gpu著色器語言就不能被正確的翻譯,螢幕上顯示就會異常,關鍵是沒有著色器webgl應用程式是不能執行的。
1、著色器(shader)
著色器的處理分為建立和初始化兩部分
建立:
function createshader(gl, str, type) else if (type == "vertex") else
gl.shadersource(shader,str);
gl.compileshader(shader);
if(!gl.getshaderparameter(shader, gl.compile_status))
return shader;
}// the vertex and fragment shaders
var vertexshadersource = " attribute vec3 vertexpos;\n" +
" uniform mat4 modelviewmatrix;\n" +
" uniform mat4 projectionmatrix;\n" +
" void main(void) \n";
var fragmentshadersource = " void main(void) \n";
初始化:var shaderprogram,
shadervertexpositionattribute,
shaderprojectionmatrixuniform,
shadermodelviewmatrixuniform;
function initshader(gl)
}
繪製物件(資料快取、陣列快取、帶型別的陣列)
準備用於表示繪製圖元的資料快取、陣列快取、帶型別的陣列
2、資料快取
// create the vertex data for a square to be drawn
function createsquare(gl);
return square;
}
變換矩陣
在三維應用中模型矩陣和投影矩陣事關能否正確繪製物件。
3、變換矩陣
var projectionmatrix,modelviewmatrix;
function initmatrices()
視口告訴webgl api繪製的範圍。
4、視口(viewport)
function initviewport(gl,canvas)
最後由html5載入函式執行以上步驟。
ios應用程式和應用程式委託
其實說白了,就是乙個類將自己不願意實現的方法以協議的方式定義,同時在這個類中包含有乙個型別為id 泛型類 的例項變數,如果另乙個類實現了這個協議,那麼另外的這個類就可以作為第乙個類的委託物件,前乙個類將自己不願意實現的類委託給後乙個類。因為第乙個類擁有第二個類的引用,所有第乙個類的例項可以直接呼叫第...
第二章 解剖乙個應用程式(2)
由於該解決方案包含兩到六個專案中的任何乙個,所以在選擇執行或除錯應用程式時,必須指定啟動哪個程式。在visual studio的解決方案資源管理器中,右鍵單擊五個應用程式專案中的任意乙個,然後從選單中選擇set as startup project專案。然後,您可以選擇部署到 器或實際裝置。要構建和...
python啟動應用程式和終止應用程式
每天上班,工作需要,電腦上需要每天開機啟動一些軟體,下班時候,需要關掉一些軟體。乙個乙個開啟和關閉貌似是很繁瑣的,於是乎,這個指令碼產生了。系統環境 win7 32位 python 2.7.9 你還需要安裝pywin32。pip install pywin32 啟動應用程式指令碼 coding ut...