로드 VAO 기능에 glDrawArraysInstanced를 사용하려고OpenGL을 충돌 할 때()
glGenVertexArrays(1, &VAO);
glGenBuffers(1, &modelVertexVBO);
glGenBuffers(1, &sphereTransformVBO);
glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, modelVertexVBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * (sphereModel->numVertices * 3), &(sphereModel->vertices[0]), GL_STATIC_DRAW);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), NULL);
glBindBuffer(GL_ARRAY_BUFFER, sphereTransformVBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * (maxSphereStorage * 4 * 4), NULL, GL_STATIC_DRAW);
glVertexAttribPointer(1, 4 * 4, GL_FLOAT, GL_FALSE, 4 * 4 * sizeof(GLfloat), NULL);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glVertexAttribDivisor(sphereTransformVBO, 1);
glBindVertexArray(0);
도형 그리기 기능 :
glBindVertexArray(VAO);
glDrawArraysInstanced(sphereModel->mode, 0, sphereModel->numVertices, sphereCount);
나는 그것이 다음과 같은 충돌 메모와 함께 충돌이 코드를 실행 해보십시오 : 예외 0x0000000068F4EDB4 (nvoglv64.dll) Engine.exe에서 throw됩니다. 0xC0000005 : 0x0000000000000000 위치를 읽는 액세스 위반.
두 번째 VBO를 제거하면 어떤 이유로 작동합니다.
감사합니다. 정말로 빠른 답변에 감사드립니다. –
첫 번째 버그는 실제로 버그가 아니 었습니다. 웹 사이트에 붙여 넣을 때 실수로 1을 0으로 변경했을뿐입니다. 내가 바보라고 생각하지 않을 것입니다. XD –
은'glVertexAttribPointer()'에서'size'가 잘못되었습니다. 위반 읽기 '오류가 발생 했습니까? – Harish