如何动态地画一条虚线在Android中使用OpenGL ES 2.0编程

大哥大姐,请讲解下,如何动态地画一条虚线在Android中使用OpenGL ES 2.0编程
最新回答
薄荷微光

2024-04-17 12:05:16

动态绘制虚线,可以参考如下内容:
、被称为点画的影响。不幸的是,点画已经从OpenGL的删除,但幸运的是,有几种方法仍然得到的效果。我们必须充分利用的OpenGL的着色语言的这项任务。 顶点着色器:uniform mat4 u_modelViewProjectionMatrix;
uniform mat4 mv;
attribute vec4 a_position;
attribute vec4 a_color;
varying vec4 v_color;
varying vec4 position;
void main() {
gl_Position = u_modelViewProjectionMatrix * a_position;
position = mv * a_position;
v_color = a_color;
}

着色器:precision mediump float;
uniform vec2 sourcePoint;
varying vec4 v_color;
varying vec4 position;
void main() {
if (cos(0.1*abs(distance(sourcePoint.xy, position.xy))) + 0.5 > 0.0) {
gl_FragColor = vec4(0,0,0,0);
} else {
gl_FragColor = v_color;
}
}

我没有在这里找到本教程中,我测试了,这里是我的结果:

正如罗斯托夫在这个线程解释,这里最大的部分是sourcePoint。

的关键 CodeGo.net,整个事情是sourcePoint被传递的
该行的起源。

如果你不喜欢这种方式也存在textures图案的效果。有与α虚线效果textures,并将其应用到您的线路。
2.
我找到了一个更好的解决方案。它的水平和垂直线。
#define DOT_VERTEX_CODE \
"attribute vec4 a_Position;" \
"uniform mat4 projectionMatrix;" \
"varying vec2 v_xy;" \
"void main() {gl_PointSize = 1.0; gl_Position = a_Position*projectionMatrix; v_xy = a_Position.xy;}"
#define DOT_FRAGMENT_CODE \
"precision mediump float;" \
"varying vec2 v_xy;" \
"uniform float isVert;" \
"uniform vec4 color1;" \
"uniform vec4 color2;" \
"void main() {gl_FragColor = mod(isVert > 0.0 ? v_xy.y : v_xy.x, 2.0) >= 1.0 ? color1 : color2;}"