2011-10-09 27 views
8

enter image description hereCómo dibujar la línea "brillante" en OpenGL ES

Podría por favor compartir algo de código (cualquier idioma) sobre cómo dibujar la línea de textura (que sería lisa o tener un brillando como efecto, línea azul, cuatro puntos) que consta de muchos puntos como en la imagen adjunta con OpenGL ES 1.0.

Lo que estaba intentando es texturizar un GL_LINE_STRIP con una textura de 16x16 o 1x16 píxeles, pero sin éxito.

+1

El tamaño de su textura no aumenta mágicamente el tamaño de su línea. Tienes una idea equivocada de cómo funciona la textura. –

+0

OK, ¿cómo puedo lograr este efecto teniendo una matriz de 2d puntos y la textura (o lo que sea necesario para pintar dicha línea con OpenGL ES) – michael

+1

Una forma en que se podría hacer es probablemente usar el sombreador de píxeles. Dibuja tu línea como siempre y luego usa 3 veces el desenfoque de la caja. – Rekin

Respuesta

5

En ES 1.0 puede usar el proceso de texturizar de forma creativa para lograr el efecto que desee, pero es probable que sea costoso en términos de tasa de relleno. Gamasutra tiene an (old) article sobre cómo se logró el brillo en el juego Tron 2.0. Deberá prestar especial atención a los comentarios de DirectX 7.0 ya que, como ES 1.0, era una tubería fija. En su caso es probable que desee simplemente para mostrar la imagen de Gauss en lugar de mezclarlo con un original ya que el brillo es todo lo que le interesa

Mi resumen del artículo es:.

  • rinden todas las líneas a una textura como línea de cabello normal y sólida. Llama a esta textura la textura fuente.
  • aplica un desenfoque horizontal lineal a eso tomando la textura de origen que acabas de representar y dibujándola, digamos, cinco veces en otra textura, que llamaré textura de desenfoque horizontal. Dibuje una copia con una compensación de x = 0 con opacidad 1.0, dibuje dos copias más, una en x = +1 y otra en x = -1, con opacidad 0.63 y dos copias finales, una en x = +2 y una a x = -2 con una opacidad de 0.17. Use mezcla aditiva
  • aplicar un desenfoque vertical lineal a eso tomando la textura de desenfoque horizontal y haciendo esencialmente los mismos pasos pero con desplazamientos y en lugar de x desplazamientos.

Esos números de opacidad se derivaron del kernel 2d Gaussian en this page. Juega con ellos para afectar la caída hacia el exterior de tus líneas.

Observe los costos adicionales implicados aquí: aparentemente está agregando diez dibujos texturizados de pantalla completa más algunos intercambios de framebuffer. Probablemente pueda salirse con menos sorteos usando multitexturas. Un enfoque de sombreado probablemente haría los pasos horizontal y vertical en una sola pasada.

Cuestiones relacionadas