Is there really no way to use gl.TRIANGLE_STRIP?

Maybe it would be nice if Three.js simply let the draw mode be selected, but make it clear in the docs that some features do not work when the draw mode is not gl.TRIANGLE.

From this comment:

To make it short, it requires much complexity to fully support all draw modes

That’s 100% ok, not all features need to be supported in all draw modes.

At the same time not all features of Three.js are used all the time by everyone, so perhaps if the docs are clear on what works, a user could pick a draw mode with understanding that certain methods are meant to operate on triangles (and not use those methods). Maybe even an error can be thrown when those methods are called if the mode is not compatible.

Use cases

Rendering realtime data in a plotting system with gl.TRIANGLE instead of gl.TRIANGLE_STRIP means 50% more upload to the GPU on each update. Or conversely, if someone were to optimize their plot rendering system from gl.TRIANGLE to gl.TRIANGLE_STRIP, they’d be able to save 33% on upload. That’s a big difference when there is a lot of data involved!

TRIANGLE_STRIP could also be a choice used in a geometry shader, where calculating all the points on the CPU would be far too expensive. As an example, the three-meshline library could be optimized be converting its vertex calculations into a geometry shader with as few points as possible (TRIANGLE_STRIP).

The VertexShaderArt website is entirely dedicated to geometry shaders, and here are a few examples using TRIANGLE_STRIP: