1. 着色器编译
1.1 着色器编译的命令序列

1.2 加载着色器步骤
对于每个着色器对象 :
- 创建一个着色器对象;
- 将着色器源代码编译为对象;
- 验证着色器的编译是否成功。
然后需要将多个着色器对象链接为一个着色器程序,包括 :
- 创建一个着色器程序;
- 将着色器对象关联到着色器程序;
- 链接着色器程序;
- 判断着色器的链接过程是否成功完成;
- 使用着色器来处理顶点和片元。
2. 着色器子程序
2.1 函数的动态调用
如果需要动态地选择调用不同的函数:
- 可以创建两个不同的着色器;
- 或者使用
if语句来进行运行时的选择,例如:
#version 330 core
void func_1() {
... }
void func_2() {
... }
uniform int func;
void
main()
(
if (func == 1)
func_1();
else
func_2();
)
- 着色器子程序在概念上类似于C语言中的函数指针,它可以实现动态子程序选择过程。
- 在着色器当中,可以预先声明一个可用子程序的集合,然后动态地指定子程序的类型。
- 然后,通过设置一个子程序的

本文详细介绍了OpenGL中的着色器编译和链接过程,包括创建和验证着色器对象,以及如何将它们链接成着色器程序。此外,还探讨了着色器子程序的概念,展示了如何实现动态函数调用,以及GLSL中子程序的声明、定义和使用。最后,提到了独立的着色器对象在处理不同片元着色时的应用。
最低0.47元/天 解锁文章
889

被折叠的 条评论
为什么被折叠?



