C++ 如何在OpenGL中仅渲染EBO的一部分?
我有绑定VBO和EBO的VAO。以前我只是用C++ 如何在OpenGL中仅渲染EBO的一部分?,c++,opengl,C++,Opengl,我有绑定VBO和EBO的VAO。以前我只是用glpaurements(GL\u三角形,EBO\u大小,GL\u UNSIGNED\u INT,0)来渲染它。但现在我想把它分成几部分,中间换些制服。如果我有36个EBO指数;我可能想画18张,换一下制服,然后画剩下的18张 我尝试了glDrawRangeElements,但它的start和end参数只是将使用哪些索引的提示glDrawArrays忽略EBO并直接从VBO中提取。glDrawElementsvoid*index参数实际上是以字节为单位
glpaurements(GL\u三角形,EBO\u大小,GL\u UNSIGNED\u INT,0)来渲染它
。但现在我想把它分成几部分,中间换些制服。如果我有36个EBO指数;我可能想画18张,换一下制服,然后画剩下的18张
我尝试了
glDrawRangeElements
,但它的start
和end
参数只是将使用哪些索引的提示glDrawArrays
忽略EBO并直接从VBO中提取。glDrawElements
void*index
参数实际上是以字节为单位的起始偏移量。正如您所知,GLsizei count
是要绘制的元素数量(不是字节!)
例如,这将得出分为两部分的36个指数的EBO:
glDrawElements( GL_TRIANGLES, 18, GL_UNSIGNED_INT, (void*)(0) )
glDrawElements( GL_TRIANGLES, 18, GL_UNSIGNED_INT, (void*)(18*sizeof(unsigned int)) )
glpaurements
函数中的最后一个参数是EBO中的偏移量。如果通过0
,则它将从头开始。如果通过i*sizeof(uint32\u t)
,则它从i
th索引开始。