Cómo utilizar OpenGL ES 2.0 para dibujar dinámicamente líneas de puntos en la programación de Android
Este efecto se llama dibujo de puntos. Desafortunadamente, el dibujo de puntos se eliminó de OpenGL, pero afortunadamente todavía hay varias formas de lograr este efecto. Debemos aprovechar al máximo el lenguaje de sombreado de OpenGL para realizar esta tarea. Vertex shader uniforme mat4 u_modelViewProjectionMatrix;
uniform mat4 mv;
atributo vec4 a_position;
atributo vec4 a_color
variante vec4 a_color;
variando vec4 v_color;
variando vec4 posición;
void main() {
gl_Position = u_modelViewProjectionMatrix * a_position;
p>position = mv * a_position;
v_color = a_color;
}
Shaders: precisión mediap float
uniforme vec2 sourcePoint;
variando vec4 v_color;
variando la posición de vec4;
void main() {
if (cos( 0,1 *abs(distancia(puntofuente.xy, posición.xy)))+ 0,5 & gt 0,0) {
gl_FragColor = vec4(0,0,0,0);
} else {
gl_FragColor = v_color;
}
}
No lo encontré en el tutorial, probé , el resultado es el siguiente:
Como explica Rostov en este tema, la parte más grande aquí es el punto de origen.
La clave de CodeGo.net es pasar el punto de origen al origen de la línea.
Si no te gusta esto, también puedes usar un efecto de patrón de textura. Algunas texturas tienen un efecto de guión alfa que puedes aplicar a las líneas.
2.
Encontré una solución mejor. Tiene líneas horizontales y verticales.
#define DOT_VERTEX_CODE \
"atributo vec4 a_Position;" \
"proyección mat4 uniforme; \
"variante vec2 v_xy ;" \
"void main() {gl_PointSize = 1.0; gl_Position = a_Position*projectionMatrix; v_xy = a_Position.xy;}"
#define DOT_FRAGMENT_CODE \
"precisión mediap float;"
"varing vec2 v_xy;" \
"void main() {gl_PointSize = 1.
"varing vec2 v_xy ;" \
"flotador uniforme isVert;"\
"uniforme vec4 color1;" \
"uniforme vec4 color2;" \
"void main() {gl_FragColor = mod(isVert > 0.0 ? v_xy.y : v_xy.x, 2.0) >= 1.0 ? color1 : color2;}"
"void main() {gl_FragColor = mod(isVert > 0.0 ? v_xy.y : v_xy.x, 2.0) >= 1.0 ?