2013-01-24 61 views
6

我一直在使用webgl來繪製OBJMesh的一些圖形編程,但它沒有太好,因爲它沒有正確繪製它。我認爲這是因爲我正在使用的繪圖基元,例如:gl.drawArrays(gl.TRIANGLE_STRIP, 0, vertexBuffer.numItems);什麼是WebGL的繪製原語?

所以我可以問一下webGL允許哪些基元?它和openGL一樣嗎?我一直在嘗試使用gl.QUADS,因爲我認爲它可以讓OpenGL做到這一點,所以我不太確定。

回答

12

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; 
5

是的,WebGL繪製與OpenGL ES相同的基元(與OpenGL相同)。你是否嘗試過繪製一些簡單的網格,以便縮小問題的範圍?你是否正在設置剔除,繪製正確的基元等?

我已經做了幾個WebGL演示,我繪製了複雜的網格,我總是使用GL_TRIANGLES(TRIANGLES)。如果我嘗試與其他基元相同的網格,它將打破網格,所以它取決於網格的創建方式。

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