gpt4 book ai didi

c++ - 为什么 OpenGL 告诉我我已经使用了 GL_STATIC_DRAW 而我已经指定了其他方式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:09 25 4
gpt4 key购买 nike

当我在 OpenGL 上启用调试层时,我注册了一个回调,只要有任何值得注意的事情要告诉我,它就会被调用。似乎并非所有传递给回调的消息都是错误。有一个“其他”类别,它似乎会在您完成某些操作时输出这些消息。在我的例子中,我创建了一个 VBO:

GLuint VBO_ID;
glGenBuffers(1, &VBO_ID); // The VBO_ID I get back is 3.
glBindBuffer(GL_ARRAY_BUFFER, VBO_ID);
glBufferData(GL_ARRAY_BUFFER, sizeInBytes, vertices, GL_DYNAMIC_COPY);
// At this point the callback is called, which gives the message:

message: Buffer detailed info: Buffer object 3 (bound to GL_ARRAY_BUFFER_ARB, usage hint is GL_STATIC_DRAW) will use VIDEO memory as the source for buffer object operations.

无论使用提示(glBufferData 的最后一个参数)是什么,这条消息总是说使用提示是 GL_STATIC_DRAW。无论我是否使用 GL_DYNAMIC_COPYGL_DYNAMIC_DRAWGL_STATIC_READ 等等。消息始终相同。

是的,我对此真的很困惑。还有为什么它会给出这条消息,这不是警告,因为我没有做错任何事,这只是一种确认。我已经停止禁用这种“其他”类别的消息,否则我的日志就会充满这些消息,因为每当我做某事时它都会被调用。

最佳答案

  1. 如果您启用低严重性/信息/其他,Nvidia 驱动程序会非常冗长,请随意禁用它们
  2. 正如其他人所述,GL_DYNAMIC_COPY 只是一个提示,驱动程序可以随意忽略它。
  3. 根据您对缓冲区的访问模式,您可能会看到消息指出缓冲区已在不同位置(主机内存、DMA)重新创建

不用担心那个常数,只要把 GL_STATIC_DRAW。它是旧 GL 版本的遗留物。您还可以使用 glBufferStorage,您可以在其中更精确地指定缓冲区的使用。

关于c++ - 为什么 OpenGL 告诉我我已经使用了 GL_STATIC_DRAW 而我已经指定了其他方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46771287/

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