c++ opengl nvoglv32.dll错误
Posted
技术标签:
【中文标题】c++ opengl nvoglv32.dll错误【英文标题】:c++ opengl nvoglv32.dll error 【发布时间】:2016-05-15 06:20:41 【问题描述】:我有一个 sprite 类来处理初始化 sprite 并绘制它,但我一直收到此错误 Exception thrown at 0x68ECC760 (nvoglv32.dll)
这似乎主要是因为 _vboID
和 _vertNum
我不确定它们有什么问题不过,这是它的源代码
void Sprite::init(int vertNum, float r, Shape shape)
_vertNum = vertNum;
if (_vboID = 0)
glGenBuffers(1, &_vboID);
std::vector<Vertex> vertexData(vertNum);
if (shape == Shape::CIRCLE)
for (int i = 0; i < vertNum; i++)
vertexData[i].setPosition(r*cos(i), r*sin(i));
for (int i = 0; i < _vertNum; i++)
vertexData[i].setColor(1, 1, 1, 1);
glBindBuffer(GL_VERTEX_ARRAY, _vboID);
glBufferData(GL_VERTEX_ARRAY, sizeof(vertexData), vertexData.data(), GL_DYNAMIC_DRAW);
glBindBuffer(GL_VERTEX_ARRAY, 0);
void Sprite::draw()
//bind buffer array
glBindBuffer(GL_VERTEX_ARRAY, _vboID);
//use first vertex attrib array
glEnableVertexAttribArray(0);
//pointer to vertices location
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(Vertex, position));
//pointer to vertices color
glVertexAttribPointer(1, 4, GL_UNSIGNED_BYTE, GL_FALSE, sizeof(Vertex), (void*)offsetof(Vertex, color));
//Draw the 6 vertices to the screen
glDrawArrays(GL_POLYGON, 0, _vertNum);
//Disable the vertex attrib array. This is not optional.
glDisableVertexAttribArray(0);
//Unbind the VBO
glBindBuffer(GL_ARRAY_BUFFER, 0);
【问题讨论】:
抛出了哪个异常?请尽可能准确。 @JanHenke 很抱歉没有在原始帖子中包含此内容,但这里是Exception thrown at 0x692CC760 (nvoglv32.dll) in Flora.exe: 0xC0000005: Access violation reading location 0x00000000.
,这就是 Visual Studio 给我的全部内容。
您正在尝试取消引用 NULL 指针。确保所有数据在使用前都已正确初始化。
有没有办法找到发生这种情况的地方?因为就像我说的那样,我认为它在 _vboID
或 _vertNum
中,但我不确定是哪个或是否是其中任何一个,这也是我正在使用的唯一两个变量,它们都已初始化
你有没有调试过这个问题?单步执行说明并查看引发异常的位置。实际上这是非常基本的编程技能。
【参考方案1】:
GL_VERTEX_ARRAY
不是有效的缓冲区绑定目标。你要找的是GL_ARRAY_BUFFER
。
当您在需要缓冲区绑定目标的上下文中使用 GL_VERTEX_ARRAY
时,您应该只会收到 GL_INVALID_ENUM
错误,并且调用不会产生进一步的影响。因此,您在 glVertexAttribPointer
调用期间没有绑定 GL_ARRAY_BUFFER
,这在旧版或核心配置文件中将导致 GL 将您的指针解释为指向客户端内存的指针。
您确实应该添加一些错误检查,或者使用调试回调,以便及早发现这些简单的错误。
【讨论】:
啊,不错,我已修复它,但它仍然给我一个错误消息,但这次略有不同。Exception thrown at 0x69B3C760 (nvoglv32.dll) in Flora.exe: 0xC0000005: Access violation reading location 0x00000000.
以上是关于c++ opengl nvoglv32.dll错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 EGL 1.4 查询 OpenGL32.dll 版本问题
错误提示 - WeChatWeb.exe - 损坏的图像(OPENGL32.dll)