我一直在使用 webgl 进行一些图形编程来绘制 OBJMesh,但它并没有很好地绘制它,因为它没有正确绘制它。我认为那是因为我正在使用的绘图原语,例如:gl.drawArrays(gl.TRIANGLE_STRIP, 0, vertexBuffer.numItems);
那么我能问一下 webGL 允许哪些原语吗?它和openGL一样吗?我一直在尝试使用 gl.QUADS,因为我认为它会像 openGL 那样允许它,所以我不太确定了。
我一直在使用 webgl 进行一些图形编程来绘制 OBJMesh,但它并没有很好地绘制它,因为它没有正确绘制它。我认为那是因为我正在使用的绘图原语,例如:gl.drawArrays(gl.TRIANGLE_STRIP, 0, vertexBuffer.numItems);
那么我能问一下 webGL 允许哪些原语吗?它和openGL一样吗?我一直在尝试使用 gl.QUADS,因为我认为它会像 openGL 那样允许它,所以我不太确定了。
来自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;
是的,WebGL 绘制与 OpenGL ES 相同的图元(也与 OpenGL 相同)。您是否尝试过绘制一些简单的网格,以便缩小问题的范围?您是否在设置剔除、绘制正确的图元等?
我已经完成了一些 WebGL 演示,其中我绘制了复杂的网格,并且我总是使用 GL_TRIANGLES (TRIANGLES)。如果我尝试使用其他图元使用相同的网格,它会破坏网格,因此这取决于网格的创建方式。