我一直在使用webgl进行一些图形编程来绘制OBJMesh,但它并没有太好,因为它没有正确绘制它。我认为这是因为我正在使用的绘图原语:gl.drawArrays(gl.TRIANGLE_STRIP, 0, vertexBuffer.numItems);
那么我可以问一下webGL允许哪些原语?它和openGL一样吗?我一直在尝试使用gl.QUADS,因为我认为它会像openGL那样允许它,所以我不再太确定了。
答案 0 :(得分:14)
来自https://www.khronos.org/registry/webgl/specs/1.0/:
const GLenum POINTS = 0x0000;
const GLenum LINES = 0x0001;
const GLenum LINE_LOOP = 0x0002;
const GLenum LINE_STRIP = 0x0003;
const GLenum TRIANGLES = 0x0004;
const GLenum TRIANGLE_STRIP = 0x0005;
const GLenum TRIANGLE_FAN = 0x0006;
答案 1 :(得分:5)
是的,WebGL绘制与OpenGL ES相同的原语(与OpenGL相同)。您是否尝试绘制一些琐碎的网格,以便缩小问题的范围?你在设置剔除,绘制正确的原语等吗?
我做了一些WebGL演示,我绘制了复杂的网格,我总是使用GL_TRIANGLES(TRIANGLES)。如果我尝试与其他基元相同的网格,它会破坏网格,因此它取决于网格的创建方式。