2013-01-24 13 views
6

Robiłem trochę programowania grafiki za pomocą webgl, aby narysować OBJMesh, ale nie poszło zbyt dobrze, ponieważ nie rysuje go poprawnie. Myślę, że to z powodu prymitywów rysunku, które używam np: gl.drawArrays(gl.TRIANGLE_STRIP, 0, vertexBuffer.numItems);Co to są prymitywy rysowania WebGL?

Więc czy mogę zapytać, co pozwalają prymitywy webGL? czy to jest to samo, co openGL? Próbowałem użyć gl.QUADS, ponieważ myślałem, że pozwoli to na to, jak robi to OpenGL, więc nie jestem już tego pewien.

Odpowiedz

12

Od 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

Tak, WebGL rysuje te same prymitywy, co OpenGL ES (tak samo jak OpenGL). Czy próbowałeś rysować trochę trywialnych oczek, abyś mógł zawęzić problem? Czy ustawiasz uboju, rysując prawy prymityw itp.?

Zrobiłem kilka demonstracji WebGL, w których rysuję skomplikowane siatki i zawsze używam GL_TRIANGLES (TRIANGLES). Jeśli spróbuję tych samych siatek z innymi prymitywami, to łamie siatkę, więc zależy to od tego, jak utworzono siatkę.

Oto moje dema http://rodrigo-silveira.com/webgl-3d-demos/