如何才能正确地从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];
答案 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
个索引组成。