本文主要是介绍webgl合集-怎么初始化webgl通过initShader函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
不白学就行
1.代码
function initShader(gl, vsSource, fsSource) {function compileShader(type, source) {const shader = gl.createShader(type)gl.shaderSource(shader, source)gl.compileShader(shader)if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {console.error('An error occurred compiling the shaders:', gl.getShaderInfoLog(shader))gl.deleteShader(shader)return null}return shader}const vertexShader = compileShader(gl.VERTEX_SHADER, vsSource)const fragmentShader = compileShader(gl.FRAGMENT_SHADER, fsSource)const shaderProgram = gl.createProgram()gl.attachShader(shaderProgram, vertexShader)gl.attachShader(shaderProgram, fragmentShader)gl.linkProgram(shaderProgram)if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {console.error('Unable to initialize the shader program:', gl.getProgramInfoLog(shaderProgram))return null}return shaderProgram}
2.作用
initShader
函数的工作原理如下:
- 使用
compileShader
函数分别编译顶点着色器和片元着色器。 - 创建一个新的着色器程序对象。
- 将编译后的着色器附加到程序对象。
- 链接着色器程序。
- 检查编译和链接状态,输出任何错误信息。
- 返回链接好的着色器程序对象。
这种方法将着色器编译和程序链接封装在一个函数中,使得初始化WebGL着色器变得简单和模块化。
这篇关于webgl合集-怎么初始化webgl通过initShader函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!