OpenGL - 尝试使用 VBO 会导致错误

Posted

技术标签:

【中文标题】OpenGL - 尝试使用 VBO 会导致错误【英文标题】:OpenGL - attempt to use VBO causes an error 【发布时间】:2012-04-13 09:03:14 【问题描述】:

尝试在 OpenGL 中使用 VBO 时遇到问题(使用大量教程) - 每次我调用 glBufferData 时,都会弹出“atioglxx.dll 中的访问冲突”错误。我一直在尝试使用不同数据类型的数据、顶点等,但没有成功。 伪代码如下:

GLDouble[] VertexArray = 1.0, 0.0, 1.0, 0.0, 0.0, -1.0, -1.0, 0.0, 1.0;  
glGenBuffers(1, @VertexList);
glBindBuffer(GL_ARRAY_BUFFER, VertexList);
glBufferData(GL_ARRAY_BUFFER, sizeof(VertexArray), @VertexArray, GL_STATIC_DRAW);

【问题讨论】:

你检查你的显卡是否支持VBO?你有最新的驱动程序吗? 您使用的是哪种语言? 如果这是 Pascal 并且 vertexarray 是动态数组,那么您应该尝试使用 @VertexArray[0]。 首先验证 glGenBuffers 和 glBindBuffer 是否正常工作。我的意思是你可以用 glGetError 来查看。我感觉它可能没有正确绑定。 扩展加载使用什么?有 GLEW/GLEE 吗?看来我们的内存有问题,或者opengl代码的函数指针有问题 【参考方案1】:

试试:

glBufferData(GL_ARRAY_BUFFER, sizeof(VertexArray), VertexArray, GL_STATIC_DRAW);

【讨论】:

以上是关于OpenGL - 尝试使用 VBO 会导致错误的主要内容,如果未能解决你的问题,请参考以下文章

调用 glDrawArrays() 时的 OpenGL VBO Segfault

OpenGL VBO - 数组步幅错误?

为啥分配大量 VBO 会导致性能问题?

使用 VBO/IBO 的 OpenGL 纹理三角形

OpenGL - 错误地创建多个 VBO

C++/OpenGL - 绘制立方体 VBO