著色器初始化流程圖
今天又重看了一遍《WebGL程式設計指南》,第一次學的時候連物件是什麼都搞不清。居然寫了一個能動的小人
在對JS有了一點深入瞭解後,現在終於能看懂初始化流程了,於是準備拾起圖形學,第一步就是整理一下著色器初始化流程圖:
可以通過 ProcessOn 開啟
var cv = document.getElementById("cv"),
gl = cv.getContext('webgl');
gl.clearColor(0,0.1,1,0.5);
gl.clear(gl.COLOR_BUFFER_BIT);
var VSHADER_SOURCE = 'void main(){gl_Position = vec4(0.0,0.0,0.0,1.0);gl_PointSize = 10.0;}';
var FSHADER_SOURCE = 'void main(){gl_FragColor = vec4(1.0,0.0,0.0,1.0);}';
function initShader(gl){
// 1.建立著色器物件
var vShaderObj = gl.createShader(gl.VERTEX_SHADER),
fShaderObj = gl.createShader(gl.FRAGMENT_SHADER);
// 2.向著色器物件傳入 GLSL 著色器
gl.shaderSource(vShaderObj,VSHADER_SOURCE);
gl.shaderSource(fShaderObj,FSHADER_SOURCE);
// 3.編譯著色器物件
gl.compileShader(vShaderObj);
gl.compileShader(fShaderObj);
// 著色器物件除錯資訊
// 獲取著色器物件引數資訊
// console.dir(gl.getShaderParameter(vShaderObj,gl.COMPILE_STATUS));
// 檢視編譯日誌
// console.dir(gl.getShaderInfoLog(vShaderObj));
// 4.建立程式物件
var programObj = gl.createProgram();
// 刪除程式物件
// gl.deleteProgram(programObj);
// 5.著色器對角分配給程式物件
gl.attachShader(programObj,vShaderObj);
gl.attachShader(programObj,fShaderObj);
// 刪除分配物件
// gl.detachShader(programObj,vShaderObj);
// 6. 連結程式物件中的兩種著色器
gl.linkProgram(programObj);
// 程式物件除錯資訊
// 獲取程式物件引數資訊
// console.dir(gl.getProgramParameter(programObj,gl.LINK_STATUS));
// 檢視錯誤日誌
// console.dir(gl.getProgramInfoLog(programObj));
// 7. 可以使用程式物件了
gl.useProgram(programObj);
// gl.program = 'Why this is programObj';
// console.log(gl);
};
initShader(gl);
gl.drawArrays(gl.POINTS,0,1);
這裡只不過畫出了一個紅色的點,不過終於知道了 WebGL 的初始化了,還是挺高興的。
本來對 WebCL很感興趣,覺得可以在前端進行平行計算,是一件多厲害的事情,可是感覺關於WebCL的一些文章都是幾年前的了,這幾年也沒什麼更新,到目前為止 Chrome 也沒有正式支援 WebCL,到底是為啥呢?沒有需求?現在努力鑽研,等到浪潮來臨的時候也許可以一波帶走 :D
相關文章
- markdown的流程圖實現和程式碼語法著色流程圖
- OpenGL/OpenGL ES入門: 渲染流程以及固定儲存著色器
- OpenGL著色器教程
- three.js 著色器材質之初識著色器JS
- 類載入器及類的初始化流程
- Wgpu圖文詳解(02)渲染管線與著色器GPU
- webgl 系列 —— 著色器語言Web
- Android著色器——ShaderAndroid
- 在WPF中使用著色器
- 【Flutter 專題】118 圖解特殊利器 ShaderMask 著色器Flutter圖解
- 演算法圖的著色問題演算法
- main之前初始化流程AI
- WebGL著色器渲染小遊戲實戰Web遊戲
- WebGL中的OpenGL著色器語言Web
- RILD及qcril初始化流程
- Linux的初始化流程Linux
- visualstudio著色器設計器shadergraph使用
- WebGL 3D概念講解(著色器)Web3D
- WPF網格型別畫素著色器型別
- WebGL:使用著色器進行幾何造型Web
- L2-023 圖著色問題
- Java類初始化執行流程Java
- 深入分析 Flutter 初始化流程Flutter
- webgl入門(2)-初識webgl和著色器Web
- [ARKit]4-著色器Shader的應用
- 雜題選講 #1:二分圖邊著色
- 流程圖流程圖
- webrtc PeerConnectionFactory 的初始化流程分析Web
- hive初始化、處理流程詳解Hive
- 利用著色器在WPF中實現陰影特效特效
- CesiumJS PrimitiveAPI 高階著色入門 - 從引數化幾何與 Fabric 材質到著色器 - 下篇JSMITAPI
- CesiumJS PrimitiveAPI 高階著色入門 - 從引數化幾何與 Fabric 材質到著色器 - 上篇JSMITAPI
- 流程圖製作: BPMN流程圖線上繪製流程圖
- webpack 流程解析(2):引數初始化完成Web
- 程式流程圖流程圖
- 如何在 CSS 背景圖片中對 SVG 圖片進行著色 ,修改svg圖片顏色CSSSVG
- 基於torch學汪峰寫歌詞、聊天機器人、影象著色/生成、看圖說話、字幕生成機器人
- 使用Unity著色器實現精靈(Sprite)塗鴉效果Unity