glsl着色器学习(三)

前面两篇文章已经创建好了顶点着色器和片段着色器并编译成功,下面将创建program(程序),将着色器链接起来

创建Program
javascript 复制代码
const prg = gl.createProgram();
gl.attachShader(prg, vertexShader);
gl.attachShader(prg, fragmentShader);
gl.linkProgram(prg);
if (!gl.getProgramParameter(prg, gl.LINK_STATUS)) {
  throw new Error(gl.getProgramInfoLog(prg))
};
  1. const prg = gl.createProgram();
    1. 使用Webgl的createProgram创建一个程序对象。这个程序对象包涵一个顶点着色对象和一个片段着色器对象,用于图形渲染。
    2. 如图,生成了一个prg对象。属性都为空。
    3. 此时,程序对象和顶点着色器对象以及片段着色器对象还没有关联起来
  2. gl.attachShaer(prg,vertexShader);
    1. 将之前创建并编译好的顶点着色器(vertexShader)附加到新创建的着色器程序对象(prg)上。
    2. 关联顶点着色器
  3. gl.attachShader(prg,fragmentShaer);
    1. 将之前创建并编译好的片段着色器(fragmentShader)附加到新创建的着色器程序对象(prg)上。这样,在后续的链接操作中,WebGL 会将这两个着色器组合成一个完整的渲染程序。
    2. 关联fragmentShader。
  4. gl.linkProgram(prg);
    1. 对附加了顶点着色器和片段着色器的程序对象进行链接操作。链接的过程会检查两个着色器之间的接口是否匹配,例如顶点着色器输出的变量是否能正确地被片段着色器接收等。同时,链接操作还会生成最终可在图形硬件上执行的程序代码。
  5. if (!gl.getProgramParameter(prg, gl.LINK_STATUS)) {... }
    1. 检查着色器程序的链接状态。如果gl.getProgramParameter返回的链接状态为false,则表示链接失败,此时会抛出一个错误,错误信息为通过gl.getProgramInfoLog(prg)获取的链接错误日志。
    2. link成功后的状态。
相关推荐
婷婷_1721 小时前
【PCIe 验证每日学习・Day22】PCIe 拓扑结构与 Switch / 桥片转发全解析
网络·学习·程序人生·芯片·pcie·pcie学习·pcie 拓扑
落痕的寒假1 小时前
[深度学习] 大模型学习7-多模态大模型全景解析
人工智能·深度学习·学习
墨^O^1 小时前
进程与线程的核心区别及 Linux 启动全过程解析
linux·c++·笔记·学习
寒秋花开曾相惜1 小时前
(学习笔记)3.9 异质的数据结构(3.9.1 结构)
c语言·网络·数据结构·数据库·笔记·学习
charlie1145141911 小时前
嵌入式C++教程实战之Linux下的单片机编程:从零搭建 STM32 开发工具链(4)从零构建 STM32 构建系统
linux·开发语言·c++·stm32·单片机·学习·嵌入式
AI成长日志1 小时前
【笔面试算法学习专栏】双指针专题:简单难度三题精讲(167.两数之和II、283.移动零、344.反转字符串)
学习·算法·面试
AnalogElectronic2 小时前
uniapp学习6,滚动字幕播报
javascript·学习·uni-app
phoenixlxl2 小时前
allegro导出焊盘
学习
艾莉丝努力练剑2 小时前
【Linux信号】Linux进程信号(下):可重入函数、Volatile关键字、SIGCHLD信号
linux·运维·服务器·c++·人工智能·后端·学习
深蓝海拓2 小时前
西门子S7-1500PLC的常用Area地址以及网络读写
笔记·学习·plc