OpenGL绑定和实体之间的关系


12

这主要是一个文档问题。我希望这是一个适当的地方,而不是例如程序员或stackoverflow。

我没有阅读OpenGL规范,但是从书籍(《红皮书》)和各种教程中,我无法正确掌握API的不同对象和部分是如何交互和关联的。

例如,我知道如果绑定了VAO,则绑定VBO并设置属性将导致VBO绑定到VAO。

但是对象很多,它们之间的关系可能会有所不同。例如,VAO与当前的着色程序完全无关,但是绘制操作的结果可能取决于两者。

在所有各种OpenGL组件中,我可以看到一些诸如C绑定到B或A和B的关系。所有这些关系在确定如何改变上下文状态,如何改变事物,如何将事物保存在一起并进行优化方面是一致的。

我要寻找资源解释只是这些关系。就像UML图,图形,甚至是文本文档一样,它们不关注调用,而是以紧凑的方式描述了各种OpenGL组件如何交互以及如何相互关联。

您知道在哪里可以找到这样的资源吗?


3
好问题。我已经启动并运行了整个OpenGL库/引擎,而没有对该关键问题的明确答案。
david van

1
绑定VBO不会将其绑定到VAO。而是使用来实现的glVertexAttribPointer()。OpenGL对象的图将很浅且很简单,实际上OpenGL中只有少数几个不同的对象。VAO将缓冲区用于属性。缓冲区纹理由缓冲区支持。帧缓冲区具有纹理附件。绘图命令使用当前的VAO,当前的程序,当前的帧缓冲区,当前的采样器设置以及当前的索引缓冲区/间接缓冲区。您可能自己绘制了该图。
Dietrich Epp 2015年

1
抱歉,我不会为你画画。
Dietrich Epp,2015年

2
好问题,从我的立场出发,祝您好运得到一个全面的答案,而不必花很多钱。
工程师

2
OpenGL的设计很好地说明了为什么不应该使用全局变量;)(整个API就是一堆巨大的全局数据)
glampert 2015年

Answers:


7

因此,我尝试绘制自己的图。它并不全面,主要是因为我现在对某些事情不感兴趣,而且还因为我希望它易于阅读(即使它不是正式指定的图形,我认为它也应该易于阅读)。

另外,由于似乎有些人感兴趣,因此我想在这里分享它以获取反馈并进行检查。我使用OpenGL Wiki作为检查正确性的参考,但是我可能引入了错误。

另外,如果所提供的信息对您来说还不够,或者我遗漏了值得包含在图中的重要关系,请随时提出建议,我将尽力对其进行更新。

OpenGL绑定关系图

再次,随时报告错误,问题或建议,我们深表欢迎。

编辑

  1. 缺少图形和属性之间的关系:渲染时必须启用属性才能有效
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.