当我有一个值数组并且坐标取决于indice时如何绘制点

时间:2015-08-30 04:55:56

标签: c++ opengl shader

我有一个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

这是我绘制所有点时得到的图像,我需要填充此对象并获得音量

enter image description here

0 个答案:

没有答案