我有一个131072值的数组,可以在带有着色器的opengl中绘制。每个点的坐标都是用值的指示来计算的,但是我无法绘制它。现在我在glDrawArrays中有一个错误。
这是我的代码集vao和vbo的一部分,imagen是带有数据的CGfloat指针;
int pixels = 131072;
// Create vertex array objects
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
// Create vertex buffers
glGenBuffers(1, &vbo);
// VBO for coordinates of first square
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER,
pixels * sizeof(GLfloat),
imagen,
GL_STATIC_DRAW);
glVertexAttribPointer(0, pixels, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(0);
这是我的显示功能:
void display(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBindVertexArray(vao);
glDrawArrays(GL_POINTS, 0, 1);
glBindVertexArray(0);
glutSwapBuffers();
glutPostRedisplay();
}
如果我将数组传递给着色器,如何处理数组以计算每个值的索引的坐标???
修改
这是如何使用数组的索引计算每个点的坐标,如果我有一个64x64x32像素的立方体,我这样做:
XX = 64;
YY = 64;
ZZ = 32;
x = index % XX;
y = (index / XX) % YY;
z = (int) floor((double) index / (XX * YY));
使用数组中每个元素的值计算该点的颜色
修改2
这是我绘制所有点时得到的图像,我需要填充此对象并获得音量