有人能告诉我如何在不使用Three.js或任何其他工具包的情况下在WebGL中绘制虚线吗?只是简单的WebGL。我对WebGL非常陌生,似乎找不到这个问题的答案。
发布于 2013-03-11 08:12:02
在WebGL (或OpenGL ES)中没有原生点绘线,但如果在VBO中包含了顶点属性,则使用片段着色器可以轻松实现该效果。
precision highp float;
varying float LengthSoFar; // <-- passed in from the vertex shader
const vec3 Color = vec3(1, 1, 1);
const float NumDashes = 10.0; // 10 dashes for every 1 unit in LengthSoFar
void main()
{
float alpha = floor(2.0 * fract(LengthSoFar * NumDashes));
gl_FragColor = vec4(Color, alpha);
}
另一种方法是查找1D纹理。到目前为止的length属性实际上只是一个1D纹理坐标。
发布于 2013-03-12 01:49:01
我在过去做过的一件事是创建一个包含路径的点的顶点缓冲区,然后使用
gl.drawArrays(gl.LINES, 0, vertexCount);
使用gl.LINES
自然会跳过路径的每隔一段,如果路径点足够频繁,就会产生虚线效果。它简单易懂,但在适当的情况下有效。
https://stackoverflow.com/questions/15328350
复制相似问题