【问题标题】:OpenGL: preparing data to be sent to shaders confusionOpenGL:准备要发送到着色器的数据混乱
【发布时间】:2014-04-14 15:52:52
【问题描述】:

对于如何设置我的应用程序以将数据发送到我的着色器并进行绘制,我有点困惑。我知道我必须生成一个VAO,绑定它,生成缓冲区对象,绑定它们,用数据填充它并创建一个属性指针来引用缓冲区对象中的数据,因为openGL红皮书告诉我......但是我实际上不知道在这个过程中发生了什么。有人可以逐步解释这个过程并解释正在发生的事情吗?为我和其他不太了解此过程的人澄清这一点。 VAO实际上是做什么的?我知道我可以使用属性指针引用缓冲区对象中的数据,它会正常工作,那么 VAO 有什么意义呢?

【问题讨论】:

  • 如果您对我的回答满意,请接受。你还有更多的疑惑吗?

标签: c++ opengl


【解决方案1】:

顶点数组对象 (VAO) 是包含一组顶点缓冲区对象的对象,旨在存储完整渲染对象或完整渲染批次的信息。如果您不使用 VAO,则对于每个批次,您必须一个接一个地绑定所有 VBO。将批次中的所有 VBO 都放在一个 VAO 中,您只需绑定 VAO 一次,而不是绑定所有 VBO。

顶点缓冲区对象 (VBO) 是视频卡高速内存中的内存缓冲区,旨在保存有关顶点的信息。 VBO 可以存储法线、纹理坐标、顶点等信息。这就是为什么您必须使用属性指针让着色器知道 VBO 内部的内容。与立即模式渲染相比,VBO 提供了显着的性能提升,主要是因为数据驻留在视频设备内存中而不是系统内存中,因此可以直接由视频设备渲染。

您必须绑定 VBO 或 VAO 以让 OpenGL 知道您将在下一次绘制调用中绘制什么,或者您将使用某些 VBO 并告诉 OpenGL 准备好使用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2014-08-16
    相关资源
    最近更新 更多