解剖WebGL應用程式

2021-06-20 12:00:38 字數 2186 閱讀 9455

本文參考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...