OpenGL VBO DMA массив - PullRequest
       8

OpenGL VBO DMA массив

2 голосов
/ 27 ноября 2010

Я создаю массив позиций для рисования, и я застреваю, когда использую dma для массива

, если я объявляю размер массива и заполняю, я могу заставить его работать, но если я делаю


float *datac;
datac=NULL;
datac = new float[12];

datac[0] = 0;datac[1] = 0;datac[2] = 0;
datac[3] = 0;datac[4] = 100;datac[5] = 0;
datac[6] = 100;datac[7] = 100;datac[8] = 0;
datac[9] = 100;datac[10] = 0;datac[11] = 0;

//how do I pass it through to these functions
//this is what I was using when I done float datac[12] = ....
//I have tried using this sizeof(*datac)*sizeof(float)
//which compiles but just does not draw

glBufferData(GL_ARRAY_BUFFER, sizeof(datac), datac, GL_STATIC_DRAW);
glDrawArrays(GL_QUADS, 0, sizeof(datac)/ sizeof(float) / 3);

Будучи скучным, и я не могу думать, что мне нужно делать

Ответы [ 3 ]

2 голосов
/ 27 ноября 2010

Это C ++, поэтому вы можете использовать std::vector и упростить свою жизнь:

std::vector<float> datac(12);

datac[0] = 0;datac[1] = 0;datac[2] = 0;
datac[3] = 0;datac[4] = 100;datac[5] = 0;
datac[6] = 100;datac[7] = 100;datac[8] = 0;
datac[9] = 100;datac[10] = 0;datac[11] = 0;

glBufferData(GL_ARRAY_BUFFER, datac.size()*sizeof(float), &datac[0], GL_STATIC_DRAW);
// glVertexPointer in GL2 or glAttribPointer in GL3 comes here
glDrawArrays(GL_QUADS, 0, datac.size() / 3);
1 голос
/ 27 ноября 2010

Второй параметр для glBufferData должен быть sizeof(float) * 12.

Вам также необходимо указать массивы с помощью функций gl*Pointer.Вы, кажется, используете Vec3s для своих вершин, я полагаю, что по умолчанию используется Vec4.Например:

GLuint VertexBuf;
glGenBuffers(1, &VertexBuf);
glBindBuffer(GL_ARRAY_BUFFER, VertexBuf);
glBufferData(GL_ARRAY_BUFFER, sizeof(float)*12, datac, GL_STATIC_DRAW);
glVertexPointer(3, GL_FLOAT, 0, 0);

glDrawArrays(GL_QUADS, 0, sizeof(float) * (12 / 3));
0 голосов
/ 27 ноября 2010

Хмм .. это второй параметр glBufferData

sizeof(datac)*12

Редактировать: исправлено в комментариях

sizeof (float) * 12

...