当前位置: 首页 > news >正文

OpenGL API 之 glVertexAttribPointer

glVertexAttribPointer

  定义通用顶点属性数据的数组

 C Specification

  format

void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const void * pointer);

 Parameters

nametypedescription
indexGLuint Specifies the index of the generic vertex attribute to be modified.
sizeGLintSpecifies the number of components per generic vertex attribute. Must be 1, 2, 3, 4. Additionally, the symbolic constant GL_BGRA is accepted by glVertexAttribPointer. The initial value is 4.
typeGLenumSpecifies the data type of each component in the array. The symbolic constants GL_BYTEGL_UNSIGNED_BYTEGL_SHORTGL_UNSIGNED_SHORTGL_INT, and GL_UNSIGNED_INT are accepted by glVertexAttribPointer and glVertexAttribIPointer. Additionally GL_HALF_FLOATGL_FLOATGL_DOUBLEGL_FIXEDGL_INT_2_10_10_10_REVGL_UNSIGNED_INT_2_10_10_10_REV and GL_UNSIGNED_INT_10F_11F_11F_REV are accepted by glVertexAttribPointerGL_DOUBLE is also accepted by glVertexAttribLPointer and is the only token accepted by the type parameter for that function. The initial value is GL_FLOAT.
normalizedGLbooleanFor glVertexAttribPointer, specifies whether fixed-point data values should be normalized (GL_TRUE) or converted directly as fixed-point values (GL_FALSE) when they are accessed.
strideGLsizeiSpecifies the byte offset between consecutive generic vertex attributes. If stride is 0, the generic vertex attributes are understood to be tightly packed in the array. The initial value is 0.
pointerconst void *Specifies a offset of the first component of the first generic vertex attribute in the array in the data store of the buffer currently bound to the GL_ARRAY_BUFFER target. The initial value is 0.

描述

        glVertexAttribPointer、glVertexAttribIPointer 和 glVertexAttribLPointer 指定在索引索引处的通用顶点属性数组的位置和数据格式,以便在渲染时使用。size 指定每个属性的组件数,并且必须为 1、2、3、4 或 GL_BGRA。Type 指定每个组件的数据类型,Stride 指定从一个属性到下一个属性的字节步幅,允许将顶点和属性打包到单个数组中或存储在单独的数组中。

        对于 glVertexAttribPointer,如果规范化设置为 GL_TRUE,则表示以整数格式存储的值在访问并转换为浮点时将映射到范围 [-1,1](对于有符号值)或 [0,1](对于无符号值)。否则,值将直接转换为浮点数,而无需规范化。

         对于 glVertexAttribIPointer,仅接受整数类型GL_BYTE、GL_UNSIGNED_BYTE、GL_SHORT、GL_UNSIGNED_SHORT、GL_INT GL_UNSIGNED_INT。值始终保留为整数值。

        glVertexAttribLPointer 指定与使用 64 位双精度组件声明的着色器属性变量关联的通用顶点属性数组的状态。类型必须GL_DOUBLE。索引、大小和步幅的行为与 glVertexAttribPointer 和 glVertexAttribIPointer 所述。

        如果指针不为 NULL,则必须将非零命名的缓冲区对象绑定到GL_ARRAY_BUFFER目标(请参阅 glBindBuffer),否则将生成错误。指针被视为缓冲区对象数据存储中的字节偏移量。缓冲区对象绑定 (GL_ARRAY_BUFFER_BINDING) 保存为索引索引的通用顶点属性数组状态 (GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING)。

        指定通用顶点属性数组时,除了当前顶点数组缓冲区对象绑定外,大小、类型、规范化、步幅和指针将另存为顶点数组状态。

        要启用和禁用通用顶点属性数组,请调用 glEnableVertexAttribArray 和 glDisableVertexAttribArray with index。如果启用,则在调用 glDrawArrays、glMultiDrawArrays、glDrawElements、glMultiDrawElements 或 glDrawRangeElements 时使用通用顶点属性数组。

注意

        每个通用顶点属性数组最初都是禁用的,并且在调用 glDrawElements、glDrawRangeElements、glDrawArrays、glMultiDrawArray 或 glMultiDrawElements 时无法访问该数组。

        仅当 GL 版本为 4.4 或更高版本时,类型才接受 GL_UNSIGNED_INT_10F_11F_11F_REV。

参考

OpenGL 4 Reference Pages (khronos.org)

相关文章:

OpenGL API 之 glVertexAttribPointer

glVertexAttribPointer 定义通用顶点属性数据的数组 C Specification format void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const void * pointer); Parameters nametypedescriptionindexGLuint Specifies the inde…...

蓝桥杯真题4

[蓝桥杯 2017 省 AB] 分巧克力 题目描述 儿童节那天有 KKK 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 NNN 块巧克力,其中第 iii 块是 HiWiH_i \times W_iHi​Wi​ 的方格组成的长方形。 为了公平起见,小明需要从这 NN…...

day02_基本语法

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记Java2307_沐沐霸的博客-CSDN博客 零、复习昨日 一、程序&Java介绍 二、安装JDK&配置环境变量 三、DOS命令 四、第一个程序[重点] 五、Java语言规范[重点] 六、运行机制 七、Typora工具使用 附录:…...

多线程之单例模式

前言 本篇介绍的是wait与notify方法,通过wait来顺序控制执行一些代码,了解单例模式,进行单例模式的简单实现,介绍饿汉模式下出现线程不安全的问题与解决;如有错误,请在评论区指正,让我们一起交…...

2023年绿色建筑国际会议(ICoGB 2023) | Springer独立出版

会议简介 Brief Introduction 2023年绿色建筑国际会议(ICoGB 2023) 会议时间:2023年5月21日-23日 召开地点:瑞典斯德哥尔摩 大会官网:www.icogb.org 2023年绿色建筑国际会议(ICoGB 2023)将围绕“绿色建筑”的最新研究领域而展开,为…...

Python中进程和线程到底有什么区别?

人生苦短,我用python python 安装包资料:点击此处跳转文末名片获取 一、进程和线程的关系 线程与进程的区别可以归纳为以下4点: 地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。…...

2023美赛春季赛F题思路数据代码论文分享

文章目录赛题思路赛题详情参赛建议(个人见解)选择队友及任务分配问题(重要程度:5星)2023美赛春季赛F题思路数据代码【最新】赛题思路 (赛题出来以后第一时间在CSDN分享) 最新进度在文章最下方卡片,加入获取…...

念一句咒语 AI 就帮我写一个应用,我人麻了...

原文链接:https://forum.laf.run/d/232 作为人类,我们时常会有自己独特的想法和脑洞大开的创意。然而,这些想法往往因为成本过高而无法实现,毕竟每个人的能力和精力都是有限的,尤其是对于程序员而言,不可能…...

开放平台设计之接口签名认证

前言 当前时代,数据是王道!当我们自己的平台有了足够大的数据量,就有可能诞生一个开放平台宫第三方分析、使用。那么我们怎么去实现对外部调用接口的控制与鉴权呢?这是我们今天的重点——接口签名认证!!&a…...

Vue自创插件发布到npm以及使用方法

Vue自创插件发布到npm以及使用方法 目标:创建my-popup-selector下拉框组件,并发布到npm,效果如下图: 禁用时样式: ①创建vue项目: my-popup-selector ②项目目录结构截图如下: ③在项目根目录…...

合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信息提取、监测等实践技术

合成孔径雷达干涉测量(Interferometric Synthetic Aperture Radar, InSAR)技术作为一种新兴的主动式微波遥感技术,凭借其可以穿过大气层,全天时、全天候获取监测目标的形变信息等特性,已在地表形变监测、DEM生成、滑坡…...

Java刷题,蓝桥杯省赛第十二届(第一场)4-------------6

4、相乘题目本题总分:10 分【问题描述】小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以1000000007 的余数,会得到不同的数。小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后…...

Docker Cgroups——Docker 资源限制背后的技术原理

Docker Cgroups——Docker 资源限制背后的技术原理虽然在容器内部进程只能看到“掩饰”过的视图,但是在宿主机上,它就是一个普通的进程,与其他所有进程之间是平等竞争的关系。这就意味着虽然表面上被隔离了,但它实际上在与其他进程…...

十四. MySQL 锁相关

目录一. MySQL 锁基础Mysql 锁分类二. InnoDB 下的锁增删改查操作时底层的加锁处理表级锁1. 意向锁2. AUTO-INC锁id不连续对主从同步的影响3. 其它表锁行锁分析1. 记录锁 Record Locks2. 间隙锁 Gap Locks3. 临键锁 Next-Key Locks4. 插入意向锁5. 隐式锁6. 加锁算法InnoDB 行锁…...

ModStartBlog v7.0.0 网站简单统计,支持博客分享

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场,后台一键快速安装 …...

【C语言蓝桥杯每日一题】—— 递增序列

【C语言蓝桥杯每日一题】—— 递增序列😎前言🙌递增序列🙌总结撒花💞😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! 😊作者…...

node_express框架01

01_express 基本结构 注意点:app.get 指定了 get 方法,如果是 app.all 就是指定了所有的请求方法(例如:post delete 都是包含的),而 app.get(/) 里面访问的是根路径,如果访问别的路径&#xff…...

想转行做程序员,该怎么选择开发语言?哪个岗位工资最高?

本文主要针对零基础想了解或者转行从事开发岗的同学。 我们收集了往届毕业同学和一些正在咨询的同学,发现大家在学习初期,对转行互联网做开发,最多的疑问或者顾虑大体分为几类: 现在哪门语言比较火? 学什么语言好找到工…...

JavaWeb——【笔记】3.2JavaWeb_Web核心_Request(请求)+Response(响应)

Request(请求)Response(响应)两个对象 request、response是service()方法中的两个参数。作用分别是获取请求数据进行逻辑处理;对数据解析设置响应数据 一、简介 示例: 二、Request(请求) 1、Request继承体系 能更清楚其是由谁创建及查阅什么文档 2、Request获…...

HTML 标签和属性

一些标签 单双标签 双标签。双标签指标签是成对出现的&#xff0c;也就是有一个开始标签和一个结束标签&#xff0c;开始标签用 <标签名> 表示&#xff0c;结束标签用 </标签名> 表示&#xff0c;只有一对标签一起使用才能表示一个具体的含义。例如 <html>&…...

Go语言极简Web框架Meridian:依赖注入与清晰架构实践

1. 项目概述&#xff1a;一个“极简”的现代Web应用框架最近在GitHub上闲逛&#xff0c;又看到了一个名为rynfar/meridian的项目。点进去一看&#xff0c;简介写着“A modern web framework for building APIs and web applications in Go”。说实话&#xff0c;现在Go语言的We…...

Go 里什么时候可以“panic”?

“Don’t panic.” —— Go 谚语 但……如果我真的想 panic 呢&#xff1f;在 Go 的世界里&#xff0c;panic() 就像厨房里的灭火器&#xff1a;平时你不会用它炒菜&#xff0c;但如果油锅着火了&#xff0c;你肯定得拉它一把。今天我们就来聊聊&#xff1a;Go 里什么时候 pani…...

LSLib:让《神界原罪》和《博德之门3》MOD制作变得高效完整的实用指南

LSLib&#xff1a;让《神界原罪》和《博德之门3》MOD制作变得高效完整的实用指南 【免费下载链接】lslib Tools for manipulating Divinity Original Sin and Baldurs Gate 3 files 项目地址: https://gitcode.com/gh_mirrors/ls/lslib 你是否曾想为《神界原罪》或《博德…...

Adams驱动函数里那个神秘的‘d’到底怎么用?手把手教你避开单位换算的坑

Adams驱动函数中‘d’符号的终极指南&#xff1a;从原理到实战避坑 刚接触Adams的工程师们&#xff0c;你们是否曾在深夜盯着屏幕上那个诡异的机械臂运动轨迹百思不得其解&#xff1f;明明输入的是90度&#xff0c;为什么模型转得像陀螺一样疯狂&#xff1f;这一切的罪魁祸首很…...

Windows风扇控制终极指南:5分钟学会FanControl智能调校

Windows风扇控制终极指南&#xff1a;5分钟学会FanControl智能调校 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/f…...

终极指南:如何用WarcraftHelper彻底解决魔兽争霸3的现代系统兼容性问题

终极指南&#xff1a;如何用WarcraftHelper彻底解决魔兽争霸3的现代系统兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为魔兽争…...

FPGA调试实录:我的SPI Master模块为什么读不到数据?常见问题排查指南

FPGA调试实录&#xff1a;SPI Master模块数据读取失败的深度排查指南 当你的SPI Master模块在调试过程中突然"罢工"&#xff0c;示波器上的波形看似正常却始终无法读取数据时&#xff0c;那种挫败感每个硬件工程师都深有体会。本文将从实战角度出发&#xff0c;分享一…...

从Simulink模型到C代码:Assignment模块的‘Index Mode’选Zero还是One?一个影响深远的决定

从Simulink模型到C代码&#xff1a;索引模式选择的工程实践指南 在嵌入式软件开发中&#xff0c;模型与代码的协同设计一直是提高开发效率的关键环节。当Simulink模型工程师将算法模型转换为C代码时&#xff0c;一个看似简单的参数配置——Assignment模块的"Index Mode&q…...

从零搭建Modbus通信测试环境:TCP与串口双模式实战

1. 为什么需要搭建Modbus测试环境&#xff1f; 刚接触工业通信协议时&#xff0c;我最头疼的就是找不到合适的设备做测试。真实PLC动辄上万元&#xff0c;而Modbus作为工业领域最常用的通信协议之一&#xff0c;其实完全可以用软件模拟。搭建本地测试环境的好处很明显&#xff…...

工程师视角:从生物钟原理到实战,系统化解决跨时区时差问题

1. 时差反应的本质与挑战&#xff1a;为什么我们会被“时差”困扰&#xff1f;作为一名常年需要跨时区协作的硬件工程师&#xff0c;我对“时差”这个词有着切肤之痛。无论是为了一个紧急的客户会议飞往硅谷&#xff0c;还是参加一年一度的慕尼黑电子展&#xff0c;跨越多个时区…...