glDrawArrays плохой доступ

Я пытаюсь сделать простую игру в понг, но сталкиваюсь с некоторыми проблемами. По сути, у меня есть массив из четырех точек с х & Значение y предназначено для представления жестко закодированного шара, и мне нужно, чтобы этот шар отображался правильно. Я продолжаю падать, когда пытаюсь использовать glDrawArray, потому что четыре, которые я передаю в последнем параметре (предназначенном для рисования четырех вершин), выходят за пределы. Есть идеи почему?

В моей настройке:

//put in vertices for ball
//point 1
ballPosArr[0] = 0.1; //x
ballPosArr[1] = 0.1; //y
//pt 2
ballPosArr[2] = -0.1;
ballPosArr[3] = 0.1;
//pt 3
ballPosArr[4] = 0.1;
ballPosArr[5] = -0.1;
//pt 4
ballPosArr[6] = -0.1;
ballPosArr[7] = 0.1;//ball position buffer
GLuint buffer;
glGenBuffers( 1, &buffer);
glBindBuffer( GL_ARRAY_BUFFER, buffer);
glBufferData( GL_ARRAY_BUFFER, 8*sizeof(GLuint), ballPosArr, GL_STATIC_DRAW );
_buffers.push_back(buffer); //_buffers is a vector of GLuint's

// Initialize the attributes from the vertex shader
GLuint bPos = glGetAttribLocation(_shaderProgram, "ballPosition" );
glEnableVertexAttribArray(bPos);
glVertexAttribPointer(bPos, 2, GL_FLOAT, GL_FALSE, 0, &ballPosArr[0]);

В моем отображении обратного вызова:

GLuint bPos = glGetAttribLocation(_shaderProgram, "ballPosition");
glEnableVertexAttribArray(bPos);

//rebind buffers and send data again
//ball position
glBindBuffer(GL_ARRAY_BUFFER, _buffers[0]);
glVertexAttribPointer(bPos, 2, GL_FLOAT, GL_FALSE, 0, &ballPosArr[0]);
glDrawArrays( GL_POLYGON, 0, 4); //bad access error at 4

В моем vshader.txt:

attribute vec2 ballPosition;

void main() {

}

0

Решение

Если вы используете VBO, что вы делаете, последний аргумент glVertexAttribPointer относительное смещение в буфере, а не адрес процессора буфера. В вашем случае передайте 0 для последнего аргумента, поскольку данные вершин, которые вы хотите использовать, находятся в начале буфера.

3

Другие решения


По вопросам рекламы [email protected]