GLES2.0中文API-glBindAttribLocation

2023-11-09

名称

glBindAttribLocation - 将通用顶点属性索引与命名属性变量相关联

C规范

void glBindAttribLocation(GLuint program,

                                                  GLuint index,

                                                  const GLchar *name);

参数

program

指定要在其中建立关联的程序对象的句柄。

index

指定要绑定的通用顶点属性的索引。

name

指定一个以空终止符结尾的字符串,其中包含要绑定索引的顶点着色器属性变量的名称。

描述

glBindAttribLocation用于将程序指定的程序对象中的用户定义属性变量与通用顶点属性索引相关联。用户定义的属性变量的名称作为名称中的空终止字符串传递。要绑定到此变量的通用顶点属性索引由index指定。当程序成为当前状态的一部分时,通过通用顶点属性索引提供的值将修改由name指定的用户定义属性变量的值。

如果name引用矩阵属性变量,则index引用矩阵的第一列。然后,对于mat2类型的矩阵,其他矩阵列自动绑定到位置index + 1; index + 1和index + 2表示mat3类型的矩阵;对于mat4类型的矩阵,index + 1,index + 2和index + 3。

此命令使顶点着色器可以使用属性变量的描述性名称,而不是编号为0到GL_MAX_VERTEX_ATTRIBS -1的泛型变量。发送到每个通用属性索引的值是当前状态的一部分,就像标准顶点属性(如颜色,法线和顶点位置)一样。如果通过调用glUseProgram使不同的程序对象成为当前的程序,则跟踪通用顶点属性,使得新程序对象中的属性也将观察到相同的值,这些属性也绑定到索引。

可以通过调用glBindAttribLocation随时显式分配程序对象的属性变量名称到通用属性索引绑定。在调用glLinkProgram之前,属性绑定不会生效。成功链接程序对象后,通用属性的索引值保持固定(并且可以查询它们的值),直到发生下一个链接命令。

不允许应用程序使用此命令绑定任何标准OpenGL顶点属性,因为它们在需要时自动绑定。在程序对象链接之后发生的任何属性绑定在下次链接程序对象之前不会生效。

注意

可以在任何顶点着色器对象绑定到指定程序对象之前调用glBindAttribLocation。也允许将通用属性索引绑定到从未在顶点着色器中使用的属性变量名称。

如果以前绑定了name,则该信息将丢失。因此,您不能将一个用户定义的属性变量绑定到多个索引,但您可以将多个用户定义的属性变量绑定到同一索引。

允许应用程序将多个用户定义的属性变量绑定到相同的通用顶点属性索引。这称为aliasing(别名),仅当可执行程序中只有一个别名属性处于活动状态时,或者如果没有通过着色器的路径消耗属于同一位置的一组属性的多个属性时,才允许使用别名。允许编译器和链接器假定没有进行别名,并且可以自由地使用仅在没有别名的情况下工作的优化。不需要OpenGL实现来进行错误检查以检测别名。由于无法绑定标准属性,因此无法使用常规属性对通用属性进行别名(通用属性0除外)。

调用glLinkProgram时,链接器将绑定未显式绑定的活动属性。可以通过调用glGetAttribLocation来查询分配的位置。

调用glBindAttribLocation时,OpenGL会复制名称字符串,因此应用程序可以在函数返回后立即释放其名称字符串的副本。

错误

GL_INVALID_VALUEindex>=GL_MAX_VERTEX_ATTRIBS

GL_INVALID_OPERATIONname以保留前缀“gl_”开头

GL_INVALID_VALUEprogram不是OpenGL生成的值

GL_INVALID_OPERATIONprogram不是程序对象

相关Gets

glGet 参数GL_MAX_VERTEX_ATTRIBS

glGetActiveAttrib 参数program

glGetAttribLocation 参数programname

glIsProgram

另见

glDisableVertexAttribArrayglEnableVertexAttribArrayglUseProgramglVertexAttribglVertexAttribPointer

版权

https://www.khronos.org/registry/OpenGL-Refpages/es2.0/xhtml/glBindAttribLocation.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,图形学
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GLES2.0中文API-glBindAttribLocation 的相关文章

随机推荐

  • 什么是平衡二叉树以及如何检查它?

    对于二叉树 如果树是倾斜的 那么执行操作时计算效率就会降低 这就是确保树木不倾斜的动机 因此需要平衡二叉树 什么是平衡二叉树 平衡二叉树在计算上执行操作是高效的 平衡二叉树将遵循以下条件 任意节点左右子树高度差的绝对值小于1 对于每个节点
  • Java 15 特性

    保持六个月周期的传统 发布后Java 142020 年 3 月 17 日 我们现在有了 Java 15 下一个非 LTS 版本将于 2020 年 9 月 15 日推出 Java 15 特性 下面快速浏览一下 Java 15 的功能 密封课程
  • 如何在 Debian 11 上设置 NFS 挂载

    介绍 NFS 网络文件系统 是一种分布式文件系统协议 允许您在服务器上挂载远程目录 这允许您管理不同位置的存储空间并从多个客户端写入该空间 NFS 提供了一种相对标准且高性能的方式来通过网络访问远程系统 并且在必须定期访问共享资源的情况下运
  • Log4j 级别示例 - 顺序、优先级、自定义过滤器

    如果您使用过 log4j 您会注意到有很多方法来记录消息 例如 logger trace My Log message logger debug My Log message logger info My Log message 实际上它们
  • 如何在 Ubuntu 12.04 LTS 上设置 Apache 虚拟主机

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • json-简单示例

    json simple 是一个简单的 JSON java 工具包 json simple 库完全符合 JSON 规范 RFC4627 json 简单 json simple uses Map and List internally for
  • 如何在R中使用sample()获取样本?

    让我们了解 R 中最常用的函数之一 sample 在数据分析中 对数据进行采样是分析师最常见的过程 要研究和理解数据 有时采样是最好的方法 对于大数据来说尤其如此 R 提供标准函数sample 来从数据集中获取样本 许多业务和数据分析问题都
  • 如何在 Ubuntu 16.04 上使用 Webmin、LAMP、BIND 和 PostFix 安装 Virtualmin

    介绍 Webmin是一个 Web 前端 允许您通过浏览器远程管理服务器 虚拟分钟是Webmin的一个插件 可以通过单个界面简化多个虚拟主机的管理 类似于cPanel or Plesk 使用 Virtualmin 您可以管理用户帐户 Apac
  • Python等待时间,等待用户输入

    有时我们希望 python 程序在执行下一步之前等待特定的时间 我们可以用时间模块 sleep 函数将我们的程序暂停指定的秒数 Python等待时间 让我们看一个简单的示例 在执行进一步的语句之前 我们将暂停程序 5 秒钟 import t
  • Java 队列 – Java 中的队列

    Java Queue is an interface available in java util package and extends java util Collection interface Just like Java List
  • Python 小数 - 除法、舍入、精度

    Python 小数模块帮助我们以适当的精度进行除法和四舍五入numbers Python 十进制模块 In this lesson on decimal module in Python we will see how we can man
  • Java 字符串中最长的回文子串

    字符串中最长的回文子串是很常见的java面试题 找出最长的回文数String 首先 我们需要确定这样做的逻辑 字符串算法中的最长回文子串 这里的关键点是 从任何回文串的中间开始 如果我们向右和向左移动 1 个位置 它总是相同的字符 例如12
  • 理解 Python 3 中的字典

    介绍 The 字典是Python内置的mapping类型 词典地图keys to values这些键值对提供了一种在 Python 中存储数据的有用方法 字典通常用于保存相关数据 例如 ID 或用户配置文件中包含的信息 字典的两侧都带有花括
  • 如何使用 cd、pwd 和 ls 探索 Linux 服务器上的文件系统

    介绍 熟悉命令行是利用 Linux 服务器平台强大功能的第一步 这也是您可能希望在此环境中执行的基本上所有与服务器相关的活动的基本先决条件 虽然许多工具都存在图形替代方案 但学习命令行是一项技能 可以让您以大多数 GUI 图形用户界面 无法
  • Nginx 位置指令示例

    NGINX 服务器块中的位置指令允许将请求路由到文件系统中的正确位置 该指令用于告诉 NGINX 在哪里查找资源 方法是在将位置块与 URL 进行匹配时包含文件和文件夹 在本教程中 我们将详细了解 NGINX 位置指令 先决条件 您已经按照
  • 使用 React Hooks 优化服务器请求

    介绍 作为一名 React 开发人员 您是否厌倦了与管理不善的服务器请求作斗争 别再犹豫了 反应钩子是 React 库的一项强大功能 它允许开发人员在功能组件中使用状态和其他 React 功能 并可以帮助优化服务器请求并将 Web 应用程序
  • 如何在 Ubuntu 14.04 上使用 uWSGI 和 Nginx 为 Flask 应用程序提供服务

    介绍 在本指南中 我们将在 Ubuntu 14 04 上使用 Flask 微框架设置一个简单的 Python 应用程序 本文的大部分内容将介绍如何设置 uWSGI 应用程序服务器来启动应用程序以及如何设置 Nginx 作为前端反向代理 先决
  • python爬虫需要学习哪些基础知识_Python爬虫学习线路图丨Python爬虫需要掌握哪些知识点...

    据不完全统计 世界上80 的爬虫都是基于Python开发的 Python简单易学 对编程初学者十分友好 而且具有丰富而强大的库 开发效率奇高 因此很多编程爱好者都对Python爬虫十分感兴趣 要知道学好爬虫对工作大有裨益 可为今后入门大数据
  • 基于flask框架的用户注册页面实例

    文件框架 app py文件 from flask import Flask render template request app Flask name app route def index return register 申请注册页面
  • GLES2.0中文API-glBindAttribLocation

    名称 glBindAttribLocation 将通用顶点属性索引与命名属性变量相关联 C规范 void glBindAttribLocation GLuint program GLuint index const GLchar name