渲染模式

SpriteJSNext支持所有的WebGL渲染模式,我们可以通过设置元素的mode属性来改变它的渲染模式。

mode属性的类型是字符串,可选的值如下:

  • POINTS 以gl.POINTS模式渲染
  • LINES 以gl.LINES模式渲染
  • LINE_LOOP 以gl.LINE_LOOP模式渲染
  • LINE_STRIP 以gl.LINE_STRIP模式渲染
  • TRIANGLES 默认值,以gl.TRIANGLES模式渲染

这些模式各有用处,举例如下。

以点的模式来渲染粒子:

渲染模型的轮廓:

  1. const {Scene} = spritejs;
  2. const {Mesh3d, shaders} = spritejs.ext3d;
  3. const container = document.getElementById('container');
  4. const scene = new Scene({
  5. container,
  6. displayRatio: 2,
  7. });
  8. const layer = scene.layer3d('fglayer', {
  9. camera: {
  10. fov: 45,
  11. pos: [-2, 2, 2],
  12. },
  13. directionalLight: [0.5, 1.0, -0.3, 0.15],
  14. });
  15. const program = layer.createProgram(shaders.NORMAL);
  16. const model = layer.loadModel('https://s2.ssl.qhres.com/static/bf607b5f64a91492.json');
  17. const macow = new Mesh3d(program, {model, mode: 'LINE_STRIP'});
  18. layer.append(macow);
  19. layer.setOrbit({target: [0, 0.7, 0]});
  20. /* globals dat */
  21. const initGui = () => {
  22. const gui = new dat.GUI();
  23. gui.add({mode: 'LINE_STRIP'}, 'mode', ['LINES', 'LINE_LOOP', 'LINE_STRIP', 'TRIANGLES']).onChange((val) => {
  24. macow.attributes.mode = val;
  25. });
  26. };
  27. initGui();