首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VAO属性存储在哪里?

VAO属性存储在哪里?
EN

Stack Overflow用户
提问于 2016-04-06 18:04:44
回答 1查看 209关注 0票数 1

我正在设计一个用于快速原型GPU渲染的小型OpenGL抽象层。现在,我正在设计对象模型,用于将缓冲区对象与着色器渲染代码分离。

其目标是使更改(数据和着色代码)变得非常容易,因此我试图减少两者之间显式耦合的数量。

在我的道路上,现在有一件事是有点儿刺痛的,那就是瓦奥。例如,如果我的顶点数据如下所示:

vbo = 1,1,1,1

然后,这些数据实际上可以处理这两个着色器顶点声明:

代码语言:javascript
复制
in float x;
in float y;

代码语言:javascript
复制
in vec2 position;

问题是VAO绑定需要不同。我的结论是,VAO信息与着色器代码的关联比实际对象数据更紧密。

此外,您实际上可以从着色器代码中直接“推断”VAO规范(也就是说,VAO是一种语义,语义是在着色器代码中指定的)。

所以我想,与其将VAO存储在数据对象中,我实际上可以自动推断它并将其存储在着色器对象中。然后每次我画的时候,我从数据对象绑定VBO,从着色器绑定VAO。这样,我可以有相同的VBO工作在不同的着色器。

这很疯狂吗?这从根本上说有什么明显的坏处吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-06 20:46:18

在最近版本的GL中,通过顶点Attrib绑定程序接口查询扩展,您所谈到的一般解耦已经成为可能。

实现此功能所需的工作量是值得注意的,但自通用顶点属性(ARB VP1)出现以来,在任何版本的GL中,您肯定不会陷入僵化的顶点数据规范中。由于您已经标记了这个GL4,您可能会发现上面提到的两个核心扩展(这两个扩展都是GL4.3中的核心)很有用。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36458958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档