这是一个相当WebGL的具体问题。我无法理解drawElement的WebGL特定实现。这是API规范。 From the WebGL specification。如何使用WebGL drawElements偏移量?
我到底该如何使用偏移量?我可以使用偏移来模仿更经典的glDrawRangeElements吗?
空隙drawElements(GLenum模式,GLsizei计数,GLenum类型,GLintptr偏移) (OpenGL ES 2.0的§2.8,手册页)
绘制使用当前绑定的元件阵列缓冲器。给定的偏移量以字节为单位,并且必须是给定类型大小的有效倍数,否则会生成INVALID_OPERATION错误;请参阅缓冲区偏移量和步幅要求。如果count大于零,则必须将非空WebGLBuffer绑定到ELEMENT_ARRAY_BUFFER绑定点,否则将生成INVALID_OPERATION错误。
我有一个平坦的顶点数组和平板指数阵列,并使用一个drawElements绘制呼叫已经工作了很大,但现在我想单独绘制顶点的部分,因为它们是不同的对象。例如,索引[0]到索引[99]是一个对象(例如手臂),并且索引[100]到索引[149](例如腿)是另一个对象。这些组必须单独绘制 - 最终因为它们具有不同的纹理,并且我将在每个drawElements调用之前绑定纹理(也许还有另一种方法可以完成此操作吗?)
因此,我想调用指数drawElements [ 0]到索引[99],以及索引[100]到索引[149]的drawElements。我可以用drawElements偏移量来做到这一点吗?
随着我在这里的代码,我可以很好地画出第一组,但其余的组不显示出来。
for(var g = 0; g < groups.length; g++) {
var group = groups[g];
//Set the texture
var material = group.material;
material.bindTexture();
//Draw it!
var offset = group.offset; //index of the first element of the indices, (e.g. position '0' or position '100', from above)
var num_items = group.num_items; //number of items in this group, (e.g. '100' elements or '50' elements, from above)
gl.drawElements(draw_mode, num_items, indices.type, offset);
}
那完美。谢谢,胡安!我还是比较新的StackOverflow。 =) – SharkCop 2012-04-19 21:37:56