glBindBuffer 的访问冲突
Access Violation at glBindBuffer
本文关键字:访问冲突 glBindBuffer 更新时间:2023-10-16
我一直在使用OpenGL的程序上工作了一段时间,最近我开始偶尔在以下行上出现错误:
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_indexID);
这是出现的错误,尽管我认为它不会有太大帮助:
0x0000000069E03C13
(nvoglv64.dll) 中的首次机会例外 体素.exe:0xC0000005
:访问冲突读取位置0x000000000AA87000
.
为访问冲突提供的地址各不相同,发生冲突所需的时间也各不相同。鉴于发生访问冲突所需的时间各不相同,我猜这与两个线程尝试访问相同的数据有关,但是当冲突发生时,从来没有任何其他线程在同一个对象上工作,并且我正在使用互斥体来确保两个线程不能写入相同的数据。我已经检查并确保索引缓冲区的 ID 有效,并且由于生成和删除缓冲区 ID 的唯一线程也是绑定数据并将其传输到缓冲区的唯一线程,因此我认为访问冲突不可能因此。
如何跟踪和/或修复导致此访问冲突的原因?
我猜这与两个线程试图访问相同的数据有关,
这将称为竞争条件。竞争条件不会导致访问冲突!
我最好的选择是你从多个线程使用 OpenGL,并且你只为一个线程初始化扩展。当涉及到OpenGL扩展和线程时,Windows有点棘手:函数指针可能因上下文和线程而异。如果你使用使用为不同的上下文和/或线程初始化的函数指针,就会发生这种情况。
确保扩展加载机制正确处理多个线程和上下文。
相关文章:
- 写入位置0x0000000C时发生访问冲突
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 链表中写入访问冲突的未知原因
- C++中的openCV Mat访问冲突
- C++尝试深度复制唯一指针时出现内存访问冲突
- C++ 中动态二维数组的访问冲突
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- 写入访问冲突异常
- 在类 12.exe 中0x7B37FF80 (ucrtbased.dll) 引发异常: 0xC0000005:访问冲突读
- 0xC0000005:访问冲突写入位置0xCDCDCDCD动态分配错误
- 读取访问冲突.这0xCDCDCDCD
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- 插入数组时违反写访问冲突
- 使用 ReadProcessMemory 获取字符串值的访问冲突
- 尝试通过共享指针使用变量时读取访问冲突
- 堆栈上的 C++ 访问冲突写入异常
- 引发异常:写访问冲突. temp 为 nullptr
- 将静态字符数组中的字符分配给动态分配的字符数组 - 访问冲突
- 在C++中删除双向链表的头节点后出现访问冲突异常
- C++ 读取访问冲突,0xCDCDCDCD