2013-01-24 9 views
6

Ho fatto alcune programmazioni grafiche usando webgl per disegnare OBJMesh, ma non è andato troppo bene perché non lo sta disegnando correttamente. Penso che sia a causa delle primitive di disegno che sto usando per esempio: gl.drawArrays(gl.TRIANGLE_STRIP, 0, vertexBuffer.numItems);Quali sono le primitive di disegno di WebGL?

Quindi posso chiedere quali sono le primitive che WebGL consente? è uguale a openGL? Ho cercato di usare gl.QUADS perché pensavo che lo avrebbe consentito come OpenGL, quindi non ne sono più sicuro.

risposta

12

Da 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

Sì, WebGL disegna le stesse primitive di OpenGL ES (come anche OpenGL). Hai provato a disegnare alcune mesh banali in modo da poter restringere quale potrebbe essere il problema? Stai impostando il culling, disegnando la primitiva giusta, ecc.?

Ho eseguito alcune demo WebGL dove disegno trame complesse e utilizzo sempre GL_TRIANGLES (TRIANGOLI). Se provo le stesse mesh con altre primitive, si rompe la mesh, quindi dipende da come è stata creata la mesh.

Qui sono i miei demo http://rodrigo-silveira.com/webgl-3d-demos/