能否为glDrawElements添加起始偏移值,从第3个索引开始绘制?
glDrawElements 设置起始偏移,从指定索引开始绘制
当然可以实现从第3个索引开始绘制的需求,glDrawElements的最后一个参数就是用来指定索引缓冲区的起始偏移量的。
原代码里最后一个参数传0,代表从索引缓冲区的第一个索引(下标0)开始绘制。要从第3个索引开始,需要注意两点:
- 索引是从0开始计数的,第3个索引对应的下标是2
- 偏移量需要按字节计算,GL_UNSIGNED_INT类型的每个索引占4字节,所以起始偏移是
2 * sizeof(GLuint),也就是8字节
修改后的代码如下:
glDrawElements(GL_TRIANGLES, indicesTaperRectangle.size() - 2, GL_UNSIGNED_INT, (void*)(8));
这里还要把绘制的索引数量调整为原大小减2,因为我们跳过了前2个索引,只绘制剩下的部分。
另外要注意:偏移值必须是对应索引类型大小的整数倍,否则会触发OpenGL的对齐错误,导致绘制异常。
内容的提问来源于stack exchange,提问作者Summit
相关产品推荐
相关产品推荐

