gpt4 book ai didi

OpenGL 2.1 : glMapBuffer and usage hints

转载 作者:行者123 更新时间:2023-12-04 01:47:34 25 4
gpt4 key购买 nike

我一直在用glBufferData ,对我来说,您必须指定使用提示(例如 GL_DYNAMIC_DRAW)是有意义的。

然而,最近是suggested to me on Stack Overflow我使用的 glMapBufferglMapBufferRange修改不连续的顶点数据块。

使用时 glMapBuffer ,似乎没有任何地方可以指定使用提示。所以,我的问题如下:

  • 使用 glMapBuffer 是否有效?如果您从未在给定的 VBO 上打过电话 glBufferData在那个 VBO 上?
  • 如果是这样,由于没有给出提示,OpenGL 如何猜测用法?
  • glMapBuffer的优缺点是什么?对比 glBufferData ? (我知道它们做的事情并不完全相同。但似乎通过使用 glMapBuffer 获取指针然后写入该地址,您可以做与 glBufferData 相同的事情。)
  • 最佳答案

    • Is it valid to use glMapBuffer on a given VBO if you've never called glBufferData on that VBO?


    不,因为要映射一些内存,它必须先分配。

    • If so, how does OpenGL guess the usage, since it hasn't been given a hint?


    它没有。您必须至少调用一次 glBufferData 来初始化缓冲区对象。如果您不想实际上传数据(因为您将使用 glMapBuffer),只需为数据指针传递一个空指针即可。这就像使用 glTexImage 一样,其中创建了一个缓冲区/纹理对象,用 glBufferSubData/glTexSubImage 填充,或者在缓冲区对象的情况下以及通过内存映射填充。

    • What are the advantages/disadvantages of glMapBuffer vs glBufferData? (I know they don't do exactly the same thing. But it seems that by getting a pointer with glMapBuffer and then writing to that address, you can do the same thing glBufferData does.)

    glMapBuffer允许您从另一个线程异步写入缓冲区。对于某些实现,OpenGL 驱动程序可能让您的进程直接访问 GPU 的 DMA 内存,甚至更好地访问 GPU 本身的内存。例如在具有集成图形的 SoC 架构上。

    关于OpenGL 2.1 : glMapBuffer and usage hints,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8858298/

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