GLSL里自定义attribute变量

2023-11-06

在做法线贴图的时候需要传入顶点的切线数据,这个顶点属性值是不包含在GLSL默认提供里的,需要自己实现。于是学习了一下。

其实非常简单,首先需要glGetAttribLocation来获取变量的索引值,然后调用glVertexAttrib对其进行赋值。

代码如下:

glBegin(GL_TRIANGELS)
glColor3f(1.0, 0.0, 0.0, 1.0);
glVertex3f(1.0, 1.0, 1.0);
glVertexAttrib1f(att_idx, 0.5f);
glEnd()

我用VAO画了一个CUBE,然后在shader里用自定义attribute的值对顶点进行了偏移,实现如下:

GLint a_test = glGetAttribLocation(glsl_program, "a_test");
glBindVertexArray(VAO[CUBE]);
glBindBuffer(GL_ARRAY_BUFFER, VBO[Tangents]);
glBufferData(GL_ARRAY_BUFFER, sizeof(XYZoffset), XYZoffset, GL_STATIC_DRAW);
glEnableVertexAttribArray(a_test);
glVertexAttribPointer(a_test, 3, GL_FLOAT, 0, 0, 0);

全部代码请 这里下载

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GLSL里自定义attribute变量 的相关文章

  • C++之仿函数

    最近再看STL源码的时候看到里面的实现用了大量的仿函数 然后上网搜集了一些关于仿函数的知识 仿函数 Functor 又称为函数对象 Function Object 是一个能行使函数功能的类 仿函数的语法几乎和我们普通的函数调用一样 不过作为
  • 网络编程学习:UDP发送消息new String(packet.getData(),0,packet.getLength())报错

    最近鄙人在使用IDEA学习网络编程的UDP消息发送时 遇到了以下的报错提醒 在使用IDEA时 为了方便我们习惯性的设置了自动导包 com sun org apache xpath internal operations String 和 j
  • Swift的二分法查找实践

    Swift的二分法查找实践 Swift的二分法查找实践 在这篇教程中我们会使用计算机科学里一个基础的算法 二分法查找 binary search 我们也会实现一个二分法查找的项目 快速自动匹配 介绍 在一个数组里查找某个元素 最直接的方法是
  • Cocos Shader实现HSL和RGB颜色模型

    HSL和RGB是两种常见的颜色模型 被广泛应用于计算机图形学 数字图像处理 Web设计等领域 在进行颜色处理时 经常需要将HSL和RGB相互转换 本demo演示如何通过Cocos Creator 3 7游戏引擎 用HSL模型来调节图片颜色
  • PDU会话建立流程(8)-SM Policy Association的建立

    相关文章会在公众号同步更新 公众号 5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理 保证更新内容的准确性 避免通过二手 甚至多手的资料 以讹传讹误导网友 在介绍完流程详解后 会整理专题内容 比如切片 服务发现 QoS流端到端
  • JPBM4.4基础及数据库说明

    JPBM4 4基础及数据库说明 对jBPM4 4数据库的几张表简单介绍 A 资源库和运行时表结构 JBPM4 DEPLOYMENT 流程定义表 JBPM4 DEPLOYPROP 流程定义属性表 JBPM4 EXECUTION 流程实例表 主
  • nacos--基础--2.5--部署--集群--传统

    nacos 基础 2 5 部署 集群 传统 前提 使用hd用户登陆 完成基础环境搭建 https blog csdn net zhou920786312 article details 118212302 1 机器 IP 端口 备注 192
  • 云计算是什么

    博客主页 微笑的段嘉许博客主页 欢迎关注 点赞 收藏 留言 本文由微笑的段嘉许原创 51CTO首发时间 2023年2月1日 坚持和努力一定能换来诗与远方 作者水平很有限 如果发现错误 一定要及时告知作者哦 感谢感谢 不要偷走我小火车哦 文章
  • text11

    word 剪切板 ul li span style font family none background color rgb 255 255 255 span li li span style font family none backg
  • 比较编译技术--Java 代码的静态编译和动态编译中的问题

    本文是关于实时 Java 的 系列文章 共 5 部分 的第二篇 考察了 Java 语言的本地代码编译所涉及的一些问题 单独使用动态 即时 编译或静态 提前 编译都不能满足所有 Java 应用程序的需求 作者在各种执行环境中对这两种编译技术进
  • Linux命令_awk & 字符串过滤

    前言 被称为 Linux 文本操作三剑客之一的 awk 不但可以处理复杂文件输出 更是一门编程语言 支持对文本每行每列精确读出 格式化输出 正则匹配 if 判断 数组 循环 目录 1 语法 1 1 选项参数 1 2 内置变量 1 3 运算符
  • Integer.parseInt(s)与Integer.valueOf(s)的区别详解

    一 Integer parseInt s 用法 String s1 1000 String s2 1000 int n1 Integer parseInt s1 int n2 Integer parseInt s2 if n1 n2 Sys
  • Pycharm一复制就出现光标变成黑块,无法编辑

    光标变黑块是因为输入方式变成了改写方式 INSERT可以切换插入 改写模式 大多笔记本上是INS键 在键盘上 外接键盘一般是Insert键 但有时光按insert也不行 试试下面这个方法 file gt settings gt Plugin
  • 博客记录

    文章目录 一 3d点云 1 激光SLAM 1 从零开始做自动驾驶定位 2 点云匹配定位 1 NDT 二 编程 1 CMakeLists 三 Github 1 自动驾驶相关 四 Markdown 1 emoji 用来记录一下自己在学习的过程中
  • linux下文件的访问时间、修改时间和改变时间

    参考 linux下文件的创建时间 访问时间 修改时间和改变时间 刀刀的专栏 博客频道 CSDN NET http blog csdn net zyz511919766 article details 14452027 归纳一下 linux下
  • MyBatis动态拼接SQL

    通过使用MyBatis提供的标签方法可以实现动态SQL拼接 1 if标签
  • oracle时间获取记录

    select trunc sysdate from dual 2017 9 11 select trunc sysdate 1 from dual 2017 9 12 select sysdate from dual 从系统获取时间2017
  • VsCode怎么打开settings.json文件?

    Mac command shift p 输入setting json 选择 首选项 打开设置 json 即可
  • 使用Git进行版本控制,并将代码托管到GitHub的完整流程

    Git是一个分布式版本控制系统 它可以记录文件的修改历史 并且可以管理多人协作开发的项目 Git的基本工作流程如下 在开发者的本地电脑上安装Git 并克隆一个GitHub上已存在的项目到本地 在本地进行代码的修改和提交 这些修改都会被存储在
  • Android studio编译中Connect to maven.google.com:443[xxx] failed: connect timed out的解决方法

    前言 最近徒弟分到了一个rn的模块开发工作 但rn 大家懂的 Android studio有时需要科学上网下载必要的rn库 又是一个徒弟哀嚎的日子 问题 连接maven google com超时 具体编译报错如下 gt Could not

随机推荐

  • R语言-- R语言数据类型(3)

    列表 创建 1 1 创建一个列表L1 记录三位同学的姓名 A B C 编号 1 2 3 数学成绩 80 90 95 语文成绩 75 95 80 L1 lt list 姓名 c A B C 编号 c 1 2 3 数学 c 80 90 95 语
  • VPP代码阅读中文注解---dlmalloc.h

    Quickstart This library is all in one file to simplify the most common usage ftp it compile it O3 and link it into anoth
  • 大数据课程L3——网站流量项目的系统搭建

    文章作者邮箱 yugongshiye sina cn 地址 广东惠州 本章节目的 了解网站流量项目的运行环境 了解网站流量项目的日志采集系统搭建 了解网站流量项目的离线业务系统搭建 了解网站流量项目的Hive做离线数据处理 了解网站流量项目
  • js解leetcode(44)-简单

    1 有多少小于当前数字的数字 题目 给你一个数组 nums 对于其中每个元素 nums i 请你统计数组中比它小的所有数字的数目 换而言之 对于每个 nums i 你必须计算出有效的 j 的数量 其中 j 满足 j i 且 nums j l
  • Linux 下bsub命令

    一 bsub bsub 提交给lsf作业的命令 命令格式 bsub options command argument bsub pack job submission file q 选择队列 i 指定输入文件 I 交互模式 此时终端不能输入
  • RabbitMQ和Kafka的区别

    RabbitMQ 和 Apache Kafka 是两种流行的消息传递系统 它们具有不同的设计目标和适用场景 以下是它们的主要区别 消息传递模型 RabbitMQ RabbitMQ 是一个传统的消息队列系统 采用了基于消息队列的发布 订阅模型
  • 关于压缩感知的基本原理

    转自https blog csdn net wanz2 article details 52770095 该博客中作者介绍了传统的压缩和压缩感知 并且介绍了匹配追踪算法OMP的基本原理 让我看明白点了OMP算法 但是有一个疑问 如果不知道信
  • Unity下载大文件断点续传

    最近要使用安卓更新下载apk更新功能 由于安卓机运行内存有限 下载大文件就得采用实时下载写入 实时释放内存的方法 考虑到网络环境不稳定时下载被迫中断的情况 重新从头下载会导致不必要的资源浪费 断点续传也很有必要 UnityWebReques
  • 计算机网络第七版--概述知识点总结

    计算机网络第七版 谢希仁 第一章 概述 1 1 计算机网络在信息时代的应用 21世纪的一些重要的特征就是数字化 网络化和信息化 它是一个以网络为核心的信息时代 互联网具有两个重要的特点 连通性 交换各种信息 和共享 资源共享 1 2 互联网
  • Java核心——集合(一)接口

    集合框架围绕一组标准接口而设计 我们可以直接使用这些接口的标准实现 例如 LinkedList HashSet TreeSet等 除此之外还可以通过这些接口实现自己的集合 集合框架是一个用来代表和操纵集合的统一架构 所有的集合框架都包含如下
  • Visual Studio 2019中创建的C++项目无法使用万能头<bits/stdc++.h>解决方案

    Visual Studio 2019创建C 项目无法使用万能头
  • 很有意思的一个自定义CGI,用BAT文件做的。大家发挥想象,自己发挥哈~

    httpd conf ScriptAlias bat d test AddType application x httpd bat bat Action application x httpd bat bat aaa bat aaa bat
  • 【C++笔记】C++11常用特性的使用经验总结

    转载 https www cnblogs com feng sc p 5710724 html title12
  • php getmimetype,wordpress关于日志的常用函数get_post_mime_type()

    说明 按ID编号检索附件的mime类型 该函数可用于任何文章类型 但更适用于附件类型 用法 参数 ID 整数 可选 文章ID 默认值 返回的值 布尔型 字符 返回mime类型 出错时则返回False 示例 mime type get pos
  • DirectShow--用GraphEdit辅助调试

    前面的话 GraphEdit 微软的SDK里面有个DirectShow的辅助工具GraphEdit 这里的文字简单介绍如何将应用程序生成的GraphBuilder插入到GraphEdit中直观的显示 可能一开始我们对这种应用有点儿不理解 既
  • 牛客网 - 华为OD算法机试(可内推)

    1 前言 这几天在闭关修炼数据结构和算法 也好几天没有更新博客了 其实我也没学多久的算法 满打满算牛客和leecode也就刷了四十来道题 其实算法也没有我们一开始想象的那么难 至少面试考的算法都还比较基础 今天参加了华为OD的机试 没有想象
  • Streamlit 讲解专栏(八):图像、音频与视频魔法

    文章目录 1 前言 2 st image 嵌入图像内容 2 1 图像展示与描述 2 2 调整图像尺寸 2 3 使用本地文件或URL 3 st audio 嵌入音频内容 3 1 播放音频文件 3 2 生成音频数据播放 4 st video 嵌
  • html5中链接和分组标签

    本小白今天新学了一点html5标签的用法 内容简单 希望和大家分享一下 对html5感兴趣的小白可以去CSDN上找视频教程具体学习 http edu csdn net course detail 489 5454 auto start 1
  • 进程的休眠与唤醒(等待队列)

    1 进程休眠 1 进程有三种基本状态 就绪态 阻塞态 运行态 lt 1 gt 阻塞态 进程缺少除了CPU之外的某些资源 因此该进程不能被运行 被阻塞住了不能被CPU调度 lt 2 gt 就绪态 进程分配到了除CPU之外的所有资源 等待CPU
  • GLSL里自定义attribute变量

    在做法线贴图的时候需要传入顶点的切线数据 这个顶点属性值是不包含在GLSL默认提供里的 需要自己实现 于是学习了一下 其实非常简单 首先需要glGetAttribLocation来获取变量的索引值 然后调用glVertexAttrib对其进