当使用缓冲区对象存储顶点数组时,我在openGL中遇到问题.当我运行代码时,会出现一个窗口,显示消息" 访问冲突读取位置0x000000000 ",当我将光标移动到glGenBuufers函数旁边的箭头时,我看到描述:这是当该线程从当前函数返回时执行的下一个语句.

码:
int frame=0;
void display();
void datasource();
GLuint vbo;
void datasource()
{
GLfloat vertex1[]={-1.000000 ,0.500000 ,-0.700000 ,0.500000 ,-1.000000 ,0.800000 ,-0.700000 ,0.800000 ,-0.400000 ,0.500000 ,-0.100000 ,0.500000 ,-0.400000 ,0.800000 ,-0.100000 ,0.200000 ,0.500000 ,0.500000 ,0.500000 ,0.200000 ,0.800000 ,0.500000,0.800000 ,0.800000 ,0.800000 ,0.500000 ,1.100000 ,0.500000 ,0.800000 ,0.800000 ,1.100000,0.800000 };
glGenBuffers(1,&vbo);
glBindBuffer(GL_ARRAY_BUFFER,vbo);
glBufferData(GL_ARRAY_BUFFER,sizeof(vertex1),vertex1,GL_STATIC_DRAW);
}
void init(int arc,char **arch)
{
glutInit(&arc,arch);
glutInitWindowSize(800,800);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutCreateWindow("chess");
glClearColor(0.0,0.0,0.0,0.0);
glutDisplayFunc(display);
}
int main(int arc,char **arch)
{
init(arc,arch);
datasource();
glutMainLoop();
return 0;
} …Run Code Online (Sandbox Code Playgroud)