OpenGL ES 3.0着色器和程序

本文介绍了OpenGL ES 3.0中着色器和程序对象的概念及创建过程。着色器对象是编译器,程序对象是链接后的可执行程序。每个程序对象必须包含一个顶点着色器和一个片段着色器。创建和编译着色器涉及创建对象、设置源码、编译、链接等步骤。同时,文章提供了查询编译状态和获取信息日志的方法。
摘要由CSDN通过智能技术生成

理解着色器和程序

      要想使用着色器进行渲染,需要创建着色器对象程序对象。着色器对象可以理解为编译器,程序对象可以理解为链接程序。 着色器对象是包含单个着色器的对象。源代码提供给着色器对象,然后着色器对象被编译为一个目标形式(类似于.obj文件)。编译之后,着色器对象可以连接到一个程序对象。程序对象可以连接到多个着色器对象。在Opengl ES中,每个程序对象必须连接一个顶点着色器和一个片段着色器(不多也不少),这和桌面Opengl不同。程序对象被链接为可用于渲染的最后“可执行程序”。

        获得链接后的着色器对象的一般过程如下:

            1、 创建一个顶点着色器对象和一个片段着色器对象

            2、将源代码连接到每个着色器对象

            3、编译着色器对象

            4、创建一个程序对象

            5、将编译后的着色器对象连接到程序对象

            6、链接程序对象

 创建和编译一个着色器

1、GLuint shader = glCreateShader(GLenum type);

            创建着色的类型可以是type = GL_VERTEX_SHADER 顶点着色器或者type = GL_FRAGMENT_SHADER片段着色器。返回值shader 是指向新着色器对象的句柄。

    2、void glDeleteShader(GLuint shader);

             可以用如上方法,通过着色器对象句柄删除着色器对象

             注意:如果一个着色器连接到一个程序对象后,调用glDeleteShader不会立即删除着色器,而是将着色器标记为删除,在着色器不再连接到任何程序对象时,它的内存才被释放。

     3、void glShaderSource(GLuint shader,GLsizei count,const GLchar* const *string,const GLint * length);

            函数作用:提供着色器源代码或者指定着色器源代码

            shader   指向着色器对象的句柄

            coun

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值