温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

opengl学习笔记——着色器创建

发布时间:2020-06-21 08:33:22 来源:网络 阅读:369 作者:蚂蚁雄心 栏目:开发技术

1、创建着色器对象GLuint glCreateShader(GLenum type)

创建一个空白的着色器对象并返回其句柄,type 为GL_VERTEX_SHADER或者GL_FRAGMENT_SHADER

2、定义着色器源代码字符串

void glShaderSource(GLuint shader,GLuint nstrings,const GLchar** source,GLint *lenghs)

例如glShaderSource(*shader, sizeof(sources)/sizeof(*sources), sources, nullptr);

如果lenghs为nullptr,就会假定各个字符串都是以null结束,如果lengths不为nullptr,它就会指向一个包含strings各个对应元素的字符串长度的数组

3、编译着色器对象void glCompileShader(GLuint  shader)

4、创建一个程序对象 GLuint glCreateProgram(),返回一个空白的程序对象并返回其句柄,程序对象可以向其附加着色器对象

5、附加着色器对象

void glAttachShader(GLuint program,GLuint shader)

可以将着色器对象附加到多个程序对象上

6、链接程序 void glLinkProgram(GLuint program)

链接操作会分配一致变量的位置,解析独立编译的着色器对象之间的引用。如果包含GL_VERTEX_SHADER,就会创建一个将在可编程顶点处理器上运行的可执行程序,如果包含GL_FRAGMENT_SHADER,就会创建一个将在片元处理器上运行的可执行程序,为了保持清洁,一个很有用的编程技巧是一旦将着色器对象附加到程序对象并且连接成功后就删除它们,它们此时不会被删除,但是它们会标记为不再引用是删除。

7、安装程序对象,作为当前渲染状态的一部分void glUseProgram(GLuint program)


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI