只从IBO中提取一个指标

时间:2017-03-19 23:56:01

标签: arrays opengl

如何才能正确地从elemets数组中绘制一个点?下面的代码将数组的一部分从0绘制为选定的。

class Mesh
{
public:
...
vector <GLuint> indices;
...
}

void renderSelected(GLuint selectedNum)
{
    glBindVertexArray(this->VAO);
    glDrawElements(GL_POINTS, 
    this->indices[selectedNum] * sizeof(GLuint), 
    GL_UNSIGNED_INT, 
    0;
    glBindVertexArray(0);
}

每次只有一个相同的点。

    glDrawElements(GL_POINTS, 
    this->indices[selectedNum] * sizeof(GLuint), 
    GL_UNSIGNED_INT, 
    &this->indices[selectedNum];

1 个答案:

答案 0 :(得分:0)

  

如何正确地从elemets数组中仅绘制一个点?

考虑到您想要在给定索引处渲染单个点。然后你只需要切换它this->indices[selectedNum] * sizeof(GLuint)应该是你要渲染的元素数量。 0应该是相对于要渲染的第一个元素的缓冲区的字节偏移量。

因此,在您的情况下,count将为1,偏移量(GLvoid *indices)将是您想要的索引的字节偏移量(假设为selectedNum })。

glDrawElements(GL_POINTS, 1, GL_UNSIGNED_INT, (void*)(selectedNum * sizeof(GLuint)));

请注意,如果它是三角形,并且您想渲染一个三角形,那么计数将是3而不是1。由于单个三角形由3个索引组成。