什么是WebGL的绘制原语?

时间:2013-01-24 14:25:04

标签: javascript opengl-es webgl

我一直在使用webgl进行一些图形编程来绘制OBJMesh,但它并没有太好,因为它没有正确绘制它。我认为这是因为我正在使用的绘图原语:gl.drawArrays(gl.TRIANGLE_STRIP, 0, vertexBuffer.numItems);

那么我可以问一下webGL允许哪些原语?它和openGL一样吗?我一直在尝试使用gl.QUADS,因为我认为它会像openGL那样允许它,所以我不再太确定了。

2 个答案:

答案 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)。如果我尝试与其他基元相同的网格,它会破坏网格,因此它取决于网格的创建方式。

以下是我的演示http://rodrigo-silveira.com/webgl-3d-demos/