バッファ オブジェクトを使用して頂点配列を格納する場合、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;
}
void display()
{
frame++;
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glDrawArrays(GL_TRIANGLE_STRIP,0,8);
glutSwapBuffers();
glutPostRedisplay();
}
私は何を間違えましたか?