<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<canvas id="webgl" width="500" height="500" style="background-color: aquamarine;"></canvas>
</body>
<!-- 頂點(diǎn)著色器代碼 -->
<script id="vertexShader" type="x-shader/x-vertex">
void main(){
//給內(nèi)置變量gl_PointSize賦值像素大小
gl_PointSize = 20.0;
//頂點(diǎn)位置,位于坐標(biāo)原點(diǎn)
gl_Position = vec4(0.0,0.0,0.0,1.0);
}
</script>
<!-- 片元著色器代碼 -->
<script id="fragmentShader" type="x-shader/x-fragment">
void main() {
gl_FragColor = vec4(1.0,0.0,0.0,1.0);
}
</script>
<script>
//獲取canvas畫布
var canvas = document.getElementById('webgl')
var gl = canvas.getContext('webgl')
//頂點(diǎn)著色器代碼
var vertexShaderSource = document.getElementById('vertexShader').innerText
//片元著色器代碼
var fragmentShaderSource = document.getElementById('fragmentShader').innerText
// 初始化著色器
var program = initShader(gl,vertexShaderSource,fragmentShaderSource)
// 開始繪制 顯示器顯示結(jié)果
gl.drawArrays(gl.POINTS,0,1)
// 聲明初始化著色器函數(shù)
function initShader(gl,vertexShaderSource,fragmentShaderSource){
// 創(chuàng)建頂點(diǎn)著色器對(duì)象
var vertexShader = gl.createShader(gl.VERTEX_SHADER)
//創(chuàng)建片元著色器對(duì)象
var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER)
// 引入頂點(diǎn)、片元著色器源代碼
gl.shaderSource(vertexShader,vertexShaderSource)
gl.shaderSource(fragmentShader,fragmentShaderSource)
//編譯頂點(diǎn)、片元著色器
gl.compileShader(vertexShader)
gl.compileShader(fragmentShader)
// 創(chuàng)建程序?qū)ο髉rogram
var program = gl.createProgram()
// 附著頂點(diǎn)著色器和片元著色器到program
gl.attachShader(program,vertexShader)
gl.attachShader(program,fragmentShader)
// 鏈接program
gl.linkProgram(program)
// 使用program
gl.useProgram(program)
return program
}
</script>
</html>
第一個(gè)webgl程序 --- 繪制一個(gè)點(diǎn)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 本系列所有文章目錄 這是學(xué)習(xí)WebGL系列的第一篇文章,我們將了解什么是WebGL以及使用WebGL的一個(gè)簡(jiǎn)單例子...
- 學(xué)前工作準(zhǔn)備 JDK下載及環(huán)境搭建 下載地址: Oracle官網(wǎng) 安裝教程及環(huán)境配置: 教程鏈接 文本編輯器推...
- classPath(無(wú)論在哪都能執(zhí)行.class文件如果沒有配置classPath,會(huì)自動(dòng)到當(dāng)前目錄下去尋找指定名...
- 第一名:格子衫(當(dāng)之無(wú)愧的第一,不接受反駁) 讓我們來(lái)看看程序員近十年來(lái)買格子衫的款式變化 真維斯黑白條紋 森馬黑...
- Title: 第一個(gè)arduino程序,控制8x8點(diǎn)陣屏[2020-01-17] 想用芯片控制屏幕輸出點(diǎn)內(nèi)容,查了...