GLES2.0中文API-glShaderBinary

名称

glShaderBinary - 加载预编译的着色器二进制文件

C规范

void glShaderBinary(    GLsizei n,
     const GLuint *shaders,
     GLenum binaryformat,
     const void *binary,
     GLsizei length);

参数

n

指定着色器中存在的着色器对象句柄的数量。

shaders

指定指向将加载着色器二进制文件的着色器对象控制器数组的指针。

binaryformat

指定着色器二进制格式。

binary

指定指向客户端内存中着色器二进制数据的指针。

length

指定着色器二进制数据的长度(以字节为单位)。

描述

对于支持它们的实现,glShaderBinary加载预编译的着色器二进制文件。着色器包含n个着色器对象句柄的列表。每个句柄都引用一种独特的着色器类型(顶点着色器或片段着色器)。二进制指向客户端内存中预编译的二进制着色器代码,binaryformat表示预编译代码的格式。

根据定义指定二进制格式的扩展规范对二进制图像进行解码。 OpenGL ES没有定义特定的二进制格式,但确实提供了一种机制来获取扩展提供的这种格式的符号常量。可以通过查询GL_NUM_SHADER_BINARY_FORMATS的值来获取支持的着色器二进制格式的数量。支持的特定二进制格式列表可以通过查询GL_SHADER_BINARY_FORMATS的值来获得。

根据着色器中着色器对象的类型,glShaderBinary将单独加载二进制顶点或片段着色器,或加载包含存储在同一二进制文件中的优化顶点和片段着色器对的可执行二进制文件。

如果glShaderBinary失败,则不会恢复为其加载二进制文件的旧对象着色器对象。

注意

着色器二进制支持是可选的,因此必须在使用之前通过使用参数GL_NUM_SHADER_BINARY_FORMATSGL_SHADER_BINARY_FORMATS调用glGet来查询。 glShaderBinary在不支持任何着色器二进制格式的实现上生成GL_INVALID_OPERATION错误。这样的实现提供了glShaderSource替代方案,用于提供用于编译的OpenGL ES着色语言着色器源。

如果支持着色器二进制格式,则实现可能需要将一组优化的顶点和片段着色器二进制文件一起编译给glLinkProgram。未指定优化可能导致glLinkProgram失败。这种限制(如果存在)将记录在定义二进制格式的扩展规范中。

调用glShaderBinary时,OpenGL会复制着色器二进制数据,因此应用程序可以在函数返回后立即释放其数据副本。

错误

GL_INVALID_ENUMbinaryformat不是GL_SHADER_BINARY_FORMATS中返回的受支持格式。

GL_INVALID_VALUE:着色器中的任何值不是OpenGL生成的值。

GL_INVALID_VALUE:二进制指向的数据格式与binaryformat不匹配。

GL_INVALID_VALUEnlength为负。

GL_INVALID_OPERATION:着色器中的任何值不是着色器对象,或者着色器中有多个顶点着色器对象句柄或多个片段着色器对象句柄。

相关Gets

glGet 参数GL_NUM_SHADER_BINARY_FORMATSGL_SHADER_BINARY_FORMATS

glIsShader

另见

glCreateShaderglDeleteShaderglLinkProgram

版权

https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glShaderBinary.xml

https://blog.csdn.net/flycatdeng

Copyright © 1991-2006 Silicon Graphics, Inc.本文档的许可是根据SGI Free Software B License.详见http://oss.sgi.com/projects/FreeB/.

Android,OpenGL ES,图形学
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值