精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一起學 WebGL:繪制一個點

開發 前端
WebGL 是瀏覽器支持的一種繪制圖形的 API,是一個標準。我們可以通過 Canvas 元素在網頁的特定區域繪制 2D 和 3D 圖形。

大家好,我是前端西瓜哥。

本文講解如何用 WebGL 繪制一個點。

WebGL

WebGL 是瀏覽器支持的一種繪制圖形的 API,是一個標準。我們可以通過 Canvas 元素 在網頁的特定區域繪制 2D 和 3D 圖形。

相比 Canvas 2D,WebGL 利用了 GPU 的計算能力,繪制速度更快,性能更優。

WebGL 基于 OpenGL 發展而來,某種意義上就是 Web 版的 OpenGL,但是閹割了一些功能。

更具體點,是來自 OpenGL 的一個特殊版本 OpenGL ES 2.0,全稱為 OpenGL for Embedded Systems,“用于嵌入式系統的 OpenGL”。

使用 WebGL,除了瀏覽器正統腳本語言 JavaScript,還要使用一種 名為 GLSL ES 的類 C  著色器語言。

繪制過程和著色器

將代碼描述的效果真正繪制到屏幕上的過程,稱為 渲染管線。

管線(pipeling)這個詞有點奇怪,因為它沒有對應的比較好的翻譯,是一個直譯。

管線指的是 數據處理的流水線,這個流水線上有很多處理器,會將數據一步步地進行處理,最終得到一個成品。渲染管線,就是渲染過程中執行的一個個步驟。

渲染管線的流程為:

  1. 頂點處理階段。接收頂點信息,比如我要畫一個三角形,三個點的位置在哪里,尺寸、顏色分別是多少。
  2. 圖形裝配。多個點組合成怎樣的圖形。我們會用 API 進行指定,比如點、線段、三角形。
  3. 光柵化。將頂點轉換為需要繪制的像素信息,比如位置、深度。
  4. 片元處理階段。設置像素的顏色信息。

這四個流程中,我們能操作的是第 1 和第 4 步。

繪制一個點

Demo 地址:

https://codesandbox.io/s/webgl-hui-zhi-yi-ge-dian-2-bpwz8p。

下面我們來講解如何繪制一個點。

首先是 WebGL 繪制的地方 Canvas。我們需要在 HTML 中添加一個 Canvas 元素,然后在 JavaScript 中獲取這個元素,并拿到 WebGL 渲染上下文。

const canvas = document.querySelector("canvas");
const gl = canvas.getContext("webgl");

如果你用過 Canvas 2D,它對應的上下文變量命名通常是 ctx(context)。但對于 WebGL,我們通常會跟隨 OpenGL 的習慣,將變量命名為 gl(OpenGL 的 gl,Graphics Library 的意思)。

接著是頂點著色器。

頂點著色器,用于設置圖形的頂點相關的信息,設置好頂點,WebGL 才能確定好圖形的位置等信息,好繪制出來。

著色器的代碼是在 JavaScript 腳本中,用字符串來寫 glsl。

頂點著色器

先是頂點著色器。

const vertexShaderSrc = `
void main() {
gl_Position = vec4(0.0, 0.0, 0.0, 1.0);
gl_PointSize = 20.0;
}
`;

gl_Postion 和 gl_PointSize 是 WebGL 頂點著色器的內部變量,用于設置點的位置和點的大小。

vec4 表示矢量類型,同時也是內置函數,調用它就能得到一個 vec4 類型。

這里設置了頂點的位置 (0.0, 0.0, 0.0, 1.0)。WebGL 使用的是三維坐標系,并使用右手坐標系,就是 x 軸指向右側,y 軸指向上方,z 軸指向觀察者。原點就在畫布的正中央。

三維中,一個點只要三個維度 x、y、z 就夠了,但引入了第四個維度 w,從笛卡爾坐標升維為齊次坐標,作用是方便做矩陣變換和透視投影。齊次坐標 ??(x, y, z, w)??? 等價于三維坐標 ??(x/w, y/w, z/w)??。w 通常會設置為 1。

需要注意的是,著色器中的的數值需要加上小數點,表示用的是浮點數類型。這和 JavaScript 隨便寫都會變成浮點數不一樣。

片元著色器

然后是片元著色器。

頂點著色器確定圖形的點的位置,片元著色器則是用于設置多個頂點圍成的圖形的像素點的 顏色

const fragmentShaderSrc = `
void main() {
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
`;

gl_FragColor 是片元著色器的內部變量,這里設置為紅色。

創建渲染器

因為是入門文章,細節不展開講了。

總之下面這段代碼,將前面聲明的頂點著色器和片元著色器的兩段源碼,進行了編譯。

/**** 渲染器生成處理 ****/
// 創建頂點渲染器
const vertexShader = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vertexShader, vertexShaderSrc);
gl.compileShader(vertexShader);

// 創建片元渲染器
const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(fragmentShader, fragmentShaderSrc);
gl.compileShader(fragmentShader);

// 程序對象
const program = gl.createProgram();
gl.attachShader(program, vertexShader);
gl.attachShader(program, fragmentShader);
gl.linkProgram(program);
gl.useProgram(program);
gl.program = program;

清空緩存

gl.clearColor(0, 0, 0, 1);
gl.clear(gl.COLOR_BUFFER_BIT);

首先第一行代碼將背景色設置為黑色。當然你也可以設置為其他顏色,比如綠色 (0, 1, 0, 1)。

第二行是清空緩存區,填充背景色。

繪制點

gl.drawArrays(gl.POINTS, 0, 1);

該 API 用于調用繪制指令,有三個參數:

  1. mode。繪制怎樣的圖元。比如點(gl.POINTS)、各種類型的線段、各種類型的三角形。也就這三種圖元。再復雜的圖形也是由一個個三角形組成的。這里用到的微積分的思想,將三維物體不斷的細分,其實就是一個個非常小的平面組成的,三個點確定一個平面,也就是三角形。正方形也是兩個三角形組成。
  2. first。從哪個頂點開始繪制,通常是 0。本文只是畫一個點,這個參數沒太大意義,存在多個頂點時才有用,雖然也少用。
  3. count。使用到幾個頂點。

繪制結果如下:

圖片

結尾

下一篇畫個三角形。

責任編輯:姜華 來源: 前端西瓜哥
相關推薦

2023-04-12 07:46:24

JavaScriptWebGL

2023-05-16 07:44:03

紋理映射WebGL

2023-05-31 20:10:03

WebGL繪制立方體

2023-04-13 07:45:15

WebGL片元著色器

2023-03-29 07:31:09

WebGL坐標系

2023-04-26 07:42:16

WebGL圖元的類型

2023-05-04 08:48:42

WebGL復合矩陣

2023-06-26 15:14:19

WebGL紋理對象學習

2023-04-17 09:01:01

WebGL繪制三角形

2023-05-17 08:28:55

2023-04-27 08:27:29

WebGL變形矩陣

2023-03-02 07:44:39

pixijsWebGL

2023-02-22 09:27:31

CanvasWebGL

2022-11-29 16:35:02

Tetris鴻蒙

2022-12-02 14:20:09

Tetris鴻蒙

2023-05-08 07:29:48

WebGL視圖矩陣

2023-03-30 09:32:27

2022-11-14 17:01:34

游戲開發畫布功能

2022-09-28 13:57:41

鴻蒙開源

2022-09-16 15:22:16

測試套件鴻蒙
點贊
收藏

51CTO技術棧公眾號

天堂av手机在线| 亚洲成人动漫在线| 狠狠狠狠狠狠狠| 五月天综合网站| 欧美刺激午夜性久久久久久久| 日韩av高清在线看片| 在线观看精品一区二区三区| 国产精品一区二区久久不卡 | 制服丝袜一区二区三区| 免费一级特黄毛片| 欧美a免费在线| 久久在线观看免费| 鬼打鬼之黄金道士1992林正英| 天天操天天干视频| 综合日韩在线| 中文字幕国产精品| 日韩综合第一页| 国产激情一区| 91久久国产最好的精华液| 国产一区二区三区小说| 午夜伦理在线| 国产亚洲欧美激情| 精品一区日韩成人| 朝桐光av在线一区二区三区| 日韩av一区二区三区四区| 国内精品小视频| 免费中文字幕在线| 天天综合亚洲| 中文字幕亚洲无线码a| 一级性生活大片| 成人香蕉社区| 日韩午夜电影av| 国产3p在线播放| 欧美va视频| 日韩欧美一区二区三区久久| www.xxx麻豆| 18+激情视频在线| 最新国产の精品合集bt伙计| 亚洲精品免费在线看| 九色蝌蚪在线| 久久久久久久久蜜桃| 国外成人在线视频网站| 国产黄色片网站| 国产乱色国产精品免费视频| 91精品国产综合久久香蕉| 国产精品露脸视频| 蜜桃视频一区二区三区| 国产精品白嫩美女在线观看| 中文字幕xxxx| 日韩福利电影在线| 国产精品99导航| 免费看污视频的网站| 久久婷婷麻豆| 国产精品xxx视频| 日本妇乱大交xxxxx| 日本vs亚洲vs韩国一区三区二区| 欧美最顶级的aⅴ艳星| 欧美在线观看不卡| 日本在线观看不卡视频| 国产精品第3页| 97人妻人人澡人人爽人人精品| 另类小说综合欧美亚洲| 成人a免费视频| www.xxx国产| 99免费精品视频| 欧美成人免费在线| aiai在线| 亚洲精品免费在线播放| 成人一区二区免费视频| 一区二区精品伦理...| 91国偷自产一区二区开放时间| 日本888xxxx| 偷拍自拍亚洲| 日韩欧美一区二区在线视频| 理论片大全免费理伦片| 最新国产一区| 久久福利网址导航| 日本中文字幕网| 久久看片网站| 国产专区欧美专区| 欧美特级特黄aaaaaa在线看| 久久午夜老司机| 中日韩在线视频| av最新在线| 在线视频你懂得一区二区三区| 在线观看免费的av| 久久悠悠精品综合网| 亚洲视频一区二区三区| 91高清免费观看| 在线综合亚洲| 成人久久一区二区| 少妇荡乳情欲办公室456视频| 国产亚洲精品久| 日本道在线视频| xx欧美xxx| 日韩视频在线你懂得| 欧美熟妇一区二区| 狠狠色丁香久久综合频道| 情事1991在线| 国产丰满美女做爰| 日本一区二区三区在线不卡| 中文字幕色呦呦| 欧美日韩成人影院| 精品国产污网站| 日本精品久久久久中文| 在线欧美三区| 91视频免费网站| 久草福利在线| 亚洲图片欧美色图| 国产亚洲视频一区| 国产aⅴ精品一区二区三区久久| 久久综合88中文色鬼| 久久国产乱子伦精品| 成人av网站在线观看| 中文字幕av日韩精品| 欧美专区福利免费| 精品国产sm最大网站免费看| 艳妇荡乳欲伦69影片| 日韩国产欧美在线视频| 成人av影视在线| 在线免费看av| 在线观看区一区二| 黄色短视频在线观看| 国产精品草草| 亚洲xxxxx性| 视频一区二区三区不卡| 在线观看成人免费视频| 五十路六十路七十路熟婆| 欧美一区高清| 91九色国产社区在线观看| 二区三区在线播放| 日本高清视频一区二区| 搡老熟女老女人一区二区| 在线日韩视频| 国产精品区一区二区三含羞草| 菠萝菠萝蜜在线视频免费观看| 欧美日韩免费观看一区二区三区| 色哟哟精品观看| 日韩二区在线观看| 日韩欧美在线电影| 高清av不卡| 亚洲人成网在线播放| 黄色在线观看国产| 久久久不卡影院| 精品www久久久久奶水| 台湾佬综合网| 国产精品成人一区二区三区吃奶| 久久久久久女乱国产| 日韩欧美亚洲国产一区| 亚洲久久久久久久| 青青草97国产精品免费观看无弹窗版| 日本在线高清视频一区| 国产精品亚洲d| 中文欧美在线视频| 在线观看免费观看在线| 国产精品国产三级国产aⅴ无密码| 九九热免费精品视频| 成人在线丰满少妇av| 国产欧美一区二区三区在线 | 国产精品乱人伦中文| 超碰在线97免费| 性欧美欧美巨大69| 成人免费在线一区二区三区| a级片免费在线观看| 国产丝袜一区二区三区免费视频| 黑人精品无码一区二区三区AV| 成人av手机在线观看| 国产午夜伦鲁鲁| 精品一区二区三区中文字幕老牛| 国产精品亚洲自拍| 亚洲夜夜综合| 日韩高清av在线| 中文字幕+乱码+中文字幕明步| 中文字幕一区二区三区四区| 波多野结衣电影免费观看| 亚洲精品影院在线观看| 日韩精品一区二区三区四区五区| 少妇精品视频在线观看| 久久免费视频在线观看| 噜噜噜在线观看播放视频| 欧美精品粉嫩高潮一区二区| 九九热精品在线观看| 91麻豆国产香蕉久久精品| 91激情视频在线| 欧美1区视频| 久久久久久久久久久久久久一区 | 一级肉体全黄裸片| 国内成人免费视频| 欧美成免费一区二区视频| 精品国产一区二区三区久久狼黑人| 国产三级伦理片| 欧美午夜视频一区二区| 小早川怜子一区二区的演员表| 丁香亚洲综合激情啪啪综合| 日本男人操女人| 国内精品久久久久国产盗摄免费观看完整版| 精品欧美一区二区三区久久久| 九色成人搞黄网站| 久久久久久av| 在线观看黄色av| 日韩av最新在线观看| 一道本无吗一区| 粉嫩老牛aⅴ一区二区三区| 国精产品一区一区| 91色视频在线| 一区二区在线免费观看视频| 三级成人在线视频| 欧美久久在线观看| 欧美超碰在线| 日本一区二区三区精品视频| 精品福利网址导航| 亚洲xxxx在线| 久草综合在线| 国产成人在线播放| 91av久久| 久久99精品视频一区97| caoporn国产精品免费视频| 日韩高清中文字幕| 黄色美女一级片| 91精品福利在线一区二区三区| 日韩黄色片网站| 亚洲成av人在线观看| 欧美成欧美va| 亚洲色图一区二区| 一二三四国产精品| 久久久国际精品| 欧美色图亚洲激情| av亚洲产国偷v产偷v自拍| 伦伦影院午夜理论片| 麻豆成人91精品二区三区| 熟女人妇 成熟妇女系列视频| 999亚洲国产精| 野外做受又硬又粗又大视频√| 亚洲区综合中文字幕日日| 性刺激综合网| 成人在线免费观看视频| 色女人综合av| 不卡日本视频| 日韩资源av在线| 精品国产一区二区三区香蕉沈先生| 九九九九精品| 亚洲欧洲av| 茄子视频成人在线观看| 久久99性xxx老妇胖精品| 久久影视中文粉嫩av| 视频国产一区| 亚洲二区三区四区| 天天综合国产| 17c丨国产丨精品视频| 国产精品草草| 国内性生活视频| 日韩精品视频网站| 国产九九热视频| 国产精品一区免费视频| 又色又爽又黄18网站| 成人午夜精品一区二区三区| 中国特级黄色大片| 91色九色蝌蚪| 国产在线免费av| 亚洲三级理论片| xxxx 国产| 欧美日韩综合视频| 欧美在线视频精品| 欧美一区在线视频| 人妻少妇精品无码专区久久| 亚洲乱码国产乱码精品精天堂| 国外av在线| 日韩中文字幕国产| 激情av在线| 国产97在线视频| 99综合久久| 国产99视频精品免费视频36| 青青一区二区| 亚洲欧美久久234| 欧美色一级片| 国产成人a亚洲精v品无码| 男女性色大片免费观看一区二区| 涩多多在线观看| 99久久99久久综合| 丁香激情五月少妇| 亚洲自拍与偷拍| 中文字幕第99页| 欧美va在线播放| 国产黄在线看| 欧美激情久久久久久| 亚洲www免费| 99se婷婷在线视频观看| 精品香蕉视频| 天堂8在线天堂资源bt| 久久一区亚洲| 中文在线字幕观看| 欧美国产禁国产网站cc| 精品处破女学生| 欧美曰成人黄网| 日本久久一级片| 日韩一二三在线视频播| 日本不良网站在线观看| 91久久国产精品| 一道在线中文一区二区三区| 四虎4hu永久免费入口| 老妇喷水一区二区三区| 亚洲熟女一区二区三区| 国产精品久久一卡二卡| 亚洲免费黄色网址| 日韩欧美一级精品久久| 91精品大全| 欧美一区二区三区……| 99ri日韩精品视频| 性欧美18一19内谢| 日本色综合中文字幕| 少妇精品一区二区| 亚洲一级片在线观看| 国产女人高潮时对白| 最近中文字幕2019免费| 亚洲精品动漫| 好吊色欧美一区二区三区四区| 天天综合精品| 日本中文字幕观看| 中文字幕国产一区二区| www.国产一区二区| 亚洲精品456在线播放狼人| 日本小视频在线免费观看| 亚洲aa在线观看| 98精品视频| 一级片视频免费观看| 久久久久久久久久久久久夜| 欧美一区二区三区四| 亚洲国产精品国自产拍av秋霞| av免费在线免费观看| 91久久久久久| 亚洲成人99| 三区视频在线观看| 中文字幕在线观看不卡| 中文字幕在线视频第一页| 亚洲视频视频在线| 亚洲电影有码| 日韩性感在线| 麻豆国产精品官网| 二区三区四区视频| 91麻豆精品国产自产在线观看一区| 日本三级视频在线观看| 成人有码在线播放| 亚洲色图网站| 又色又爽又黄18网站| 香蕉影视欧美成人| 秋霞av在线| 国产成人精品日本亚洲专区61| 西野翔中文久久精品国产| 国产一区亚洲二区三区| 国产亚洲欧美日韩日本| 亚洲男人天堂网址| 中文字幕在线精品| 国产精品一站二站| 精品少妇在线视频| 91色综合久久久久婷婷| 懂色av中文字幕| 爽爽爽爽爽爽爽成人免费观看| 亚洲网站免费| 日韩精品久久一区二区| av一二三不卡影片| wwwwww在线观看| 乱亲女秽乱长久久久| 第一区第二区在线| 欧美一级黄色片视频| 一区视频在线播放| 亚洲av无码国产精品永久一区| 性金发美女69hd大尺寸| 国产精品美女久久久久久不卡| av中文字幕网址| 性做久久久久久免费观看| 成年人在线视频| 91久久久在线| 羞羞视频在线观看欧美| 五月天免费网站| 亚洲爱爱爱爱爱| 精品三区视频| 青青青在线观看视频| 91免费视频观看| 国产精品久久久久精| 午夜精品视频在线| 日韩1区2区| 800av在线播放| 欧美日韩精品三区| 国产无遮挡裸体视频在线观看| 欧美亚洲另类在线一区二区三区| 九一九一国产精品| 久久国产精品免费看| 久久精品国产精品亚洲| 免费观看成人www动漫视频| 五月天亚洲视频| 亚洲va天堂va国产va久| 91高清在线| 久久久精品国产一区二区三区| 捆绑紧缚一区二区三区视频| 日本亚洲欧美在线| 久久九九亚洲综合| 精品国产一区二区三区四区| 亚洲视频 中文字幕| 欧美久久久久免费| 欧美gay囗交囗交|