【问题标题】:Allocating vertex buffer object分配顶点缓冲区对象
【发布时间】:2013-09-04 03:36:40
【问题描述】:

我正在尝试从 opengl(c++) 中的高度图创建地形,并遵循 this tutorial

我也在尝试使用顶点缓冲区对象来加速它。在他们的示例中,他们为 x、y、z 创建了一个带有 3 个浮点数的顶点对象。然后,它们传递一个指向这些顶点对象数组的指针,这些顶点对象将被复制到缓冲区对象。我不明白的是为什么他们将缓冲区参数的大小传递给 3 个浮点数的大小(乘以顶点数)。

传递给它的顶点对象肯定大于 3 个浮点数的大小吗? glBufferDataARB 函数是否以某种方式提取这些变量?对象的大小是否等于其中变量的大小?还是我错过了什么?

【问题讨论】:

    标签: c++ opengl vertex-buffer


    【解决方案1】:

    VBO 存储字节。后来gl*Pointer() 和/或glVertexAttrib() 调用告诉OpenGL 如何解释这些字节。

    要存储三个浮点数,您需要 sizeof(float) * 3 字节。

    要存储N 三浮点顶点,您需要sizeof(float) * 3 * N 字节。

    【讨论】:

    • 好的,我了解后面解释数据的调用,但是对于存储每个顶点,包含 3 个浮点数的对象需要比单独的 3 个浮点数更多的空间?
    • 为什么会这样?这只是一个struct。它不像那里有一个 vtable 或任何东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多