gpt4 book ai didi

c++ - OpenGL:准备要发送给着色器的数据困惑

转载 作者:行者123 更新时间:2023-11-28 07:01:52 25 4
gpt4 key购买 nike

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

最佳答案

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

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

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

关于c++ - OpenGL:准备要发送给着色器的数据困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22318895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com