opengl在调用glBufferData后释放内存会导致数据不显示
opengl release memory after calling glBufferData causes the data not to display
我在opengl中使用索引绘图进行绘图。我正在发送顶点&图形卡的索引,然后尝试释放本地缓冲区。释放顶点缓冲区-没有问题,但如果我释放索引缓冲区,则不会显示任何内容。
简单地说,这段代码有效:
glGenBuffers(1, &m_VBO);
glBindBuffer(GL_ARRAY_BUFFER, m_VBO);
glBufferData(GL_ARRAY_BUFFER, m_Vertices.size()*6*sizeof(float), m_Vertices.data(),GL_STATIC_DRAW);
m_Vertices.clear();
m_Vertices.shrink_to_fit();
glGenBuffers(1, &m_IBO);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_IBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, m_TriangleIndeces.size() * sizeof(GLsizei), m_TriangleIndeces.data(), GL_STATIC_DRAW);
// m_TriangleIndeces.clear();
// m_TriangleIndeces.shrink_to_fit();
但如果我取消对最后2行的注释,则不会显示任何内容。
我也试图在第一次渲染后释放缓冲区,但也出现了同样的现象。
我知道,一旦opengl缓冲了数据,无论是到驱动程序还是到显卡,它的本地副本都可以自由滥用,所以我很困惑。
我正在修窗户10。设备经理说我有"AMD radeon(TM)R7 M360"answers"英特尔高清显卡520",不管这意味着什么。
是的,OpenGL实现确实应该执行数据的副本。
这可能是驱动程序错误
由于你似乎有两个GPU,我假设你默认在英特尔GPU上运行应用程序(英特尔以GPU驱动程序不好而闻名)。你试过在两个GPU上测试它吗?你的GPU驱动程序是最新的吗?
相关文章:
- 从数据库实时显示QT c++中的数据
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- QChart在使用QDateTimeAxis时不显示任何系列数据
- 如何存储用户输入的所有数据,然后在他们想要查看所有数据时显示它们
- 访问和打印元组中的数据,并使用 C++14 使用模板函数显示数据
- 运算符重载以显示用户定义的数据类型
- 如何在不使用委托的 QML 中显示模型数据
- 从文本文件中读取并输入到数组结构中,然后显示读取的数据C++
- 如何从amd gpus的显示输出中获取图像数据
- 它不显示数据,只显示永无止境的循环
- C++ 矢量不显示包含对象的数据
- 如何在数据文件中查找和显示内容
- Qt - 将空指针(原始数据)转换为 QImage 并将其显示在标签上
- 在QT C++编辑Qtable模型数据时,我需要得到一个小盒子,我需要显示编辑文本,这怎么可能?
- 通过显示一行星号来创建条形图,该条形图将读取数据的输入文件
- 如果构造函数和析构函数可以获取和显示(打印)数据,为什么我们需要 getter 和 setter?
- 在网格视图中显示数据 - 基于 MFC c++ 对话框的应用程序
- 使 XML 数据显示在 Blackberry 10 Cascades QML 中的 listItemComponents
- 提示用户键入 0 到 99 之间的 20 个整数.从该数据显示质数